我在使用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>