Android: невозможно отправить аудиофайл из необработанной папки с помощью текста или другого приложения - PullRequest
0 голосов
/ 07 мая 2018

Я делаю приложение для звуковой карты, и у меня всплывает AlertDialog, спрашивающий, хочет ли пользователь отправить определенный аудиофайл из необработанной папки другу через какое-либо приложение (текстовое, gmail и т. Д.), Но когда я пытаюсь для этого я получаю «не могу прикрепить файл»

Вот мой код:

            CharSequence choices[] = new CharSequence[] {"Send to friend", "Set as notification sound"};

            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            builder.setTitle("Options");
            builder.setItems(choices, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    switch(which){
                        case 0:
                            Intent share = new Intent(Intent.ACTION_SEND);
                            share.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://" + getContext().getPackageName() + "/" + myAudio[position]));
                            share.setType("audio/*");
                            startActivity(Intent.createChooser(share, "Share"));
                            break;
                        case 1:
                            break;
                    }
                }
            });
            builder.show();

myAudio - это массив, содержащий медиа в папке raw как таковой,

myAudio = new int[]{ R.raw.audioone, R.raw.audiotwo, R.raw.audiothree};

Может кто-нибудь заметить проблему здесь? Спасибо за любую помощь!

Редактировать: Вот что я пытаюсь, когда мне советуют сначала сохранить в хранилище. Это все еще не работает: (

            CharSequence choices[] = new CharSequence[] {"Send to friend", "Set as notification sound"};

            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            builder.setTitle("Options");
            builder.setItems(choices, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    switch(which){
                        case 0:
                            /*
                            Intent share = new Intent(Intent.ACTION_SEND);
                            share.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://" + getContext().getPackageName() + "/R.raw.hkwheresthelambsauce"));
                            share.setType("audio/*");
                            startActivity(Intent.createChooser(share, "Share")); */
                            InputStream inputStream;
                            FileOutputStream fileOutputStream;
                            try {
                                inputStream = getResources().openRawResource(myAudio[position]);
                                fileOutputStream = new FileOutputStream(
                                        new File(Environment.getExternalStorageDirectory(), "sound.mp3"));

                                byte[] buffer = new byte[1024];
                                int length;
                                while ((length = inputStream.read(buffer)) > 0) {
                                    fileOutputStream.write(buffer, 0, length);
                                }

                                inputStream.close();
                                fileOutputStream.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }

                            Intent intent = new Intent(Intent.ACTION_SEND);
                            intent.putExtra(Intent.EXTRA_STREAM,
                                    Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/sound.mp3" ));
                            intent.setType("audio/*");
                            startActivity(Intent.createChooser(intent, "Share sound"));
                            break;
                        case 1:
                            break;
                    }
                }
            });
            builder.show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...