我在使用android intent从我的应用程序共享内容时遇到了一个问题。我正在分享的内容存在于应用程序的私人记忆中。
我正在使用 FileProvider 进行分享,并且能够在某些应用上分享它(例如:Twitter,Gmail,Whatsapp)。但是,出于某种原因,当我从App选择器中选择Viber时,它显示为空白屏幕。
如果我将内容位置更改为外部SD卡,那么即使 Viber 也能正常工作。
我的问题是,如果我将内容位置更改为SD卡,那么我必须使用 WRITE_STORAGE_PERMISSION ,这是我不想要的。
请帮助您了解如何为Viber完成此操作,无需移动内容,也无需使用任何额外的权限,因为可以在其他应用上共享。
分享意图的代码
Uri imageUri = FileProvider.getUriForFile(context, "packagemane.pdffilesprovider", newFile);
shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.setType("*/*");
shareIntent.putExtra(Intent.EXTRA_TEXT, content +"\n"+url);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
清单中的FileProvider
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="cpackagemane.pdffilesprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/fileprovider" />
</provider>
fileprovider.xml文件
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
<files-path name="my_images" path="images/"/>
</paths>