Почему мой android shareIntent не работает? - PullRequest
1 голос
/ 23 января 2020

У меня есть приложение на звуковой панели, и я пытаюсь разрешить пользователю обмениваться звуками из моей папки res / raw. Мой код, кажется, правильно создает папку и копирует ресурс в нее. Однако при попытке поделиться я всегда получаю сообщение об ошибке из внешнего приложения. (например, gmail говорит: «Не удается прикрепить файл»). Может кто-нибудь помочь, пожалуйста?

Код:

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class Pls {
    public void sendAudio(Activity activity){
        try {
            String mediaPath = copyFiletoExternalStorage(R.raw.audio_file, "audiofile.mp3",activity);
            Intent shareMedia = new Intent(Intent.ACTION_SEND);
            shareMedia.setType("audio/*");
            shareMedia.putExtra(Intent.EXTRA_STREAM, Uri.parse(mediaPath));
            activity.startActivity(Intent.createChooser(shareMedia, "Select app"));
        } catch (Exception e) {
            Toast.makeText(activity.getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
        }
    }

    private String copyFiletoExternalStorage(int resourceId, String resourceName,Activity activity){
        String pathSDCard = Environment.getExternalStorageDirectory() + "/Android/data/" + resourceName;
        try{
            InputStream in = activity.getResources().openRawResource(resourceId);
            FileOutputStream out = null;
            out = new FileOutputStream(pathSDCard);
            byte[] buff = new byte[1024];
            int read = 0;
            try {
                while ((read = in.read(buff)) > 0) {
                    out.write(buff, 0, read);
                }
            } finally {
                in.close();
                out.close();
            }
        } catch (IOException e) {
            Log.i("err",e.toString());
        }
        return  pathSDCard;
    }
}
...