gpt4 book ai didi

java - 如何将 mp3 文件分享到 Whatsapp? (安卓工作室)

转载 作者:行者123 更新时间:2023-12-02 12:47:28 24 4
gpt4 key购买 nike

我想将 mp3 文件分享到 Whatsapp。我发现this question在 Stack Overflow 上,但接受的答案对我不起作用。如果我尝试通过 Whatsapp 分享它,它会显示“分享失败,请重试”:

                    File dest = Environment.getExternalStorageDirectory();
InputStream in = getResources().openRawResource(R.raw.sound);

try
{
OutputStream out = new FileOutputStream(new File(dest, "sound.mp3"));
byte[] buf = new byte[1024];
int len;
while ( (len = in.read(buf, 0, buf.length)) != -1)
{
out.write(buf, 0, len);
}
in.close();
out.close();
}
catch (Exception e) {
e.printStackTrace();}

Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().toString() + "/sound.mp3"));
share.setType("audio/mp3");
startActivity(Intent.createChooser(share, "Shared"));

这是完整的 MainActivity.java:

    package com.example.aaron.sharetest;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MainActivity extends AppCompatActivity {

Button shareBtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final File FILES_PATH = new File(Environment.getExternalStorageDirectory(), "Android/data/com.example.aaron.sharetest/files");

File sharefile= new File(FILES_PATH, "sound.mp3") ;
putExtra(Intent.EXTRA_STREAM, Uri.fromFile(sharefile));


shareBtn = (Button)findViewById(R.id.shareBtn);

ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
1);

shareBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {




if (Environment.MEDIA_MOUNTED.equals(

Environment.getExternalStorageState())) {

if (!FILES_PATH.mkdirs()) {

Log.w("error", "Could not create " + FILES_PATH);

}

} else {

Toast.makeText(MainActivity.this, "error", Toast.LENGTH_LONG).show();

finish();

}


File dest = Environment.getExternalStorageDirectory();
InputStream in = getResources().openRawResource(R.raw.bibikurz);

try
{
OutputStream out = new FileOutputStream(new File(dest, "sound.mp3"));
byte[] buf = new byte[1024];
int len;
while ( (len = in.read(buf, 0, buf.length)) != -1)
{
out.write(buf, 0, len);
}
in.close();
out.close();
}
catch (Exception e) {
e.printStackTrace();
}

Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().toString() + "/sound.mp3"));
share.setType("audio/mp3");
startActivity(Intent.createChooser(share, "Shared"));



}



});
}


}

当然,我在 list 中写了这一行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我需要做什么才能将 mp3 文件分享到 Whatsapp 等?

我尝试了很多已接受的答案,但没有一个对我有用。

这是我在 LogCat 中得到的内容:

06-23 02:41:17.589 23924-23924/? W/Bundle: Key android.intent.extra.STREAM expected ArrayList but value was a android.net.Uri$StringUri.  The default value <null> was returned.
06-23 02:41:17.659 23924-23924/? W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: android.net.Uri$StringUri cannot be cast to java.util.ArrayList
at android.os.Bundle.getParcelableArrayList(Bundle.java:838)
at android.content.Intent.getParcelableArrayListExtra(Intent.java:5481)
at com.whatsapp.ContactPicker.k(ContactPicker.java:623)
at com.whatsapp.ContactPicker.onCreate(ContactPicker.java:338)
at android.app.Activity.performCreate(Activity.java:6367)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
at android.app.ActivityThread.access$900(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:5621)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

最佳答案

Android 6.0 Marshmallow (API 23) 或更高版本。如果是这种情况,您必须实现 runtime permissions

使用文件路径并检查存储卡

文件 FILES_PATH = 新文件(

        Environment.getExternalStorageDirectory(),

        “Android/data/com.examples(您的包)/文件”);

    文件共享文件=新文件(

            FILES_PATH,

            “演示.mp3”) ;

putExtra(Intent.EXTRA_STREAM, Uri.fromFile(sharefile))

@Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);



        if (Environment.MEDIA_MOUNTED.equals(

            Environment.getExternalStorageState())) {

            if (!FILES_PATH.mkdirs()) {

                Log.w(TAG, "Could not create " + FILES_PATH);

            }

        } else {

            Toast.makeText(this, R.string.need_external_storage, Toast.LENGTH_LONG).show();

            finish();

        }

关于java - 如何将 mp3 文件分享到 Whatsapp? (安卓工作室),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44703119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com