Я создал приложение, которое делится звуковым файлом с 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 и как я могу предотвратить это снова?