gpt4 book ai didi

android - 使用 Intent.ACTION_SEND 的文件共享在 BBM 上拒绝访问

转载 作者:行者123 更新时间:2023-11-29 00:23:18 24 4
gpt4 key购买 nike

我正在尝试共享由我的应用程序保存的音频文件。该文件已添加到媒体存储中,因此所有应用程序都可以访问它。

Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri fileContentUri = Uri.fromFile(finalFile);
mediaScannerIntent.setData(fileContentUri);
this.sendBroadcast(mediaScannerIntent);

我使用 Intent.ACTION_SEND 将文件共享给其他应用:

public void shareRecording(View view) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
i.setType("audio/mp3");
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///" + recording.getFilePath()));
try {
startActivity(Intent.createChooser(i, "Share " + recording.getName()));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "There are no app installed to share your audio file.", Toast.LENGTH_SHORT).show();
}
}

与 GMail、Yahoo 邮件、Whatsapp 等所有应用程序都能正常工作......除了 BBM,它拒绝访问。我需要做什么才能让它在 BBM 上运行?

感谢您的帮助。

更新:

我用过

Uri fileUri = Uri.parse("content://" + recording.getFilePath());

代替

Uri fileUri = Uri.parse("file:///" + recording.getFilePath());

它适用于 BBM 但不适用于其他应用

那么使用“file:///”和“content://”解析的 URI 之间有什么区别?我如何使用它来让共享适用于所有应用程序?

Error on BBM

最佳答案

解决方案是使用实际文件来初始化Uri对象。

File recordingFile = new File(recording.getFilePath());
Uri fileUri = Uri.fromFile(recordingFile);

这适用于所有可以共享文件的应用。

关于android - 使用 Intent.ACTION_SEND 的文件共享在 BBM 上拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com