9
如何使用支持FileProvider与其他应用程序共享内容?
我正在寻找一种使用Android支持库的FileProvider与外部应用程序正确共享(而不是打开)内部文件的方法。 按照文档上的示例, <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.example.android.supportv4.my_files" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/my_paths" /> </provider> 并使用ShareCompat将文件共享到其他应用程序,如下所示: ShareCompat.IntentBuilder.from(activity) .setStream(uri) // uri from FileProvider .setType("text/html") .getIntent() .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) 不起作用,因为FLAG_GRANT_READ_URI_PERMISSION仅授予data对intent 上指定的Uri的许可,而不是EXTRA_STREAMextra 的值(由setStream)。 我试图通过将提供者设置android:exported为来损害安全性true,但是在FileProvider内部检查自身是否已导出,如果导出,则抛出异常。