我在使用android intent从我的应用程序共享内容时遇到了一个问题 . 我正在共享的内容存在于应用程序的私有内存中 .
我正在使用 FileProvider 进行共享,并且可以在某些应用上分享它(例如:Twitter,Gmail,Whatsapp) . 但是,出于某种原因,当我从App选择器中选择Viber时,它显示的是一个空白屏幕 .
如果我将内容位置更改为 external SD card ,那么即使对于 Viber 它也能正常工作 .
我的问题是,如果我将内容位置更改为SD卡,那么我必须使用 WRITE_STORAGE_PERMISSION ,这是我不想要的 .
请帮助您了解如何为Viber完成此操作,无需移动内容,也无需使用任何额外的权限,因为可以在其他应用上共享 .
Code for sharing intent
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 in manifest
<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 file
<?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>