WhatsApp перенаправляет обмен медиафайлами на диктофон - PullRequest
0 голосов
/ 20 февраля 2019

Я создал приложение, которое делится звуковым файлом с WhatsApp, когда пользователь нажимает кнопку.Все работает хорошо, за исключением того, что я больше не могу обмениваться аудиофайлами напрямую из Whatsapp.Это поведение иллюстрируется ниже. Аудио можно поделиться, щелкнув «Аудио», которое должно перенаправить пользователя к файлу, подобному деятельности, где он может выбрать свой звук. Однако это не так.Когда я нажимаю на него, WhatsApp перенаправляет меня на устройство записи звука. На этом экране я могу записать звук и поделиться этим звуком, но не могу просмотреть свои файлы.

Я подозреваю, что цель определенаНиже это вызвано тем, что другие пользователи сообщали о той же проблеме, в то время как другие, которые еще не использовали эту функцию, не имеют проблем при совместном использовании звука напрямую через WhatsApp.

    public boolean onLongClick(View view) {
        String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
        if (ContextCompat.checkSelfPermission(mContext, permission) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions((MainActivity) mContext, new String[]{permission}, 2);
            return false;
        } else {
            // Permission has been granted
            try {
                String file = "soundboard/" + person + "/" + getItem(getAdapterPosition());
                file = copyFiletoExternalStorage(file, getItem(getAdapterPosition()));

                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(file));
                sendIntent.setType("audio/*");
                mContext.startActivity(Intent.createChooser(sendIntent, "Send your audio file"));
                return true;
            } catch (Exception e) {
                Toast.makeText(mContext.getApplicationContext(), "Sharing has failed.", Toast.LENGTH_SHORT).show();
                return false;
            }
        }
    }

И вспомогательный класс для копирования файла в хранилище sd перед отправкой намерения.Этот код был взят и изменен из этого комментария .

private String copyFiletoExternalStorage(String file, String resourceName){
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            String pathSDCard = Environment.getExternalStorageDirectory() + "/Android/data/" + mContext.getPackageName() + "/" + resourceName;
            try {
                InputStream in = mContext.getAssets().open(file);
                FileOutputStream out;
                out = new FileOutputStream(pathSDCard);
                byte[] buff = new byte[1024];
                int read;
                try {
                    while ((read = in.read(buff)) > 0) {
                        out.write(buff, 0, read);
                    }
                    out.flush();
                } finally {
                    in.close();
                    out.close();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return pathSDCard;
        }
        else
            return "";
    }

Я уже деинсталлировал свое собственное приложение, перезагрузил телефон и переустановил WhatsApp, но безрезультатно.Что я могу сделать, чтобы исправить WhatsApp и как я могу предотвратить это снова?

...