Whatsapp 分享音频失败 - "please try again"
Whatsapp sharing audio fails - "please try again"
我使用这段代码已经有几年了,它运行良好:
final Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sharingIntent.setType("audio/mpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM,
SoundProvider.getUriForSound(getContext(), sound));
getActivity()
.startActivity(Intent.createChooser(sharingIntent,
getContext().getString(R.string.share)));
我的 SoundProvider
生成一个以 content://
开头的 URI,该 URI 由 FileProvider
(实际上是相同的 SoundProvider
)拾取。此提供商从我的 raw
文件夹中读取一个音频文件。
声音可以直接在 WhatsApp 中播放(而不是通用文件),并显示 ID3 标签中的正确标题。
这在 Telegram/Dropbox 等方面一直完美无缺,但直到几个月前的 WhatsApp 更新才失败,并显示消息 "Sharing failed please try again".
有没有人知道 WhatsApp 所做的任何更改并且遇到过类似的事情?
试试这个:
Uri uri = Uri.parse(audioPath);
Intent shareIntent = new Intent();
shareIntent.setType("audio/*");
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
我不得不通过将声音复制到 external-files-dir
来解决这个问题。
我不知道为什么 whatsapp 突然不再接受 FileProvider
提供的 raw
目录中的文件,而其他应用程序仍然没有任何问题。
我使用这段代码已经有几年了,它运行良好:
final Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sharingIntent.setType("audio/mpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM,
SoundProvider.getUriForSound(getContext(), sound));
getActivity()
.startActivity(Intent.createChooser(sharingIntent,
getContext().getString(R.string.share)));
我的 SoundProvider
生成一个以 content://
开头的 URI,该 URI 由 FileProvider
(实际上是相同的 SoundProvider
)拾取。此提供商从我的 raw
文件夹中读取一个音频文件。
声音可以直接在 WhatsApp 中播放(而不是通用文件),并显示 ID3 标签中的正确标题。
这在 Telegram/Dropbox 等方面一直完美无缺,但直到几个月前的 WhatsApp 更新才失败,并显示消息 "Sharing failed please try again".
有没有人知道 WhatsApp 所做的任何更改并且遇到过类似的事情?
试试这个:
Uri uri = Uri.parse(audioPath);
Intent shareIntent = new Intent();
shareIntent.setType("audio/*");
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
我不得不通过将声音复制到 external-files-dir
来解决这个问题。
我不知道为什么 whatsapp 突然不再接受 FileProvider
提供的 raw
目录中的文件,而其他应用程序仍然没有任何问题。