是否可以将FileProvider用于其他应用程序?
的manifest.xml
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
android:exported="true"
android:grantUriPermissions="false"
android:permission="com.example.filesvisible.permission.READ" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filespath" />
</provider>
...
来自doc:
false:提供程序不可用于其他应用程序。组 android:exported =“false”来限制对您的提供者的访问 应用。只有具有相同用户ID(UID)的应用程序 提供者可以访问它。
我试图将导出设置为true但我得到了这个例外
Unable to get provider android.support.v4.content.FileProvider: java.lang.SecurityException: Provider must not be exported
为什么我无法导出FileProvider?
答案 0 :(得分:15)
是否可以将FileProvider用于其他应用程序?
是。这通常就是重点。
为什么我无法导出FileProvider?
因为这不是您使用FileProvider
的方式。
FileProvider
背后的点是give select access to files to third-party apps。您可以通过FLAG_GRANT_READ_URI_PERMISSION
和/或FLAG_GRANT_WRITE_URI_PERMISSION
在用于将您的提供商的Intent
值之一传递给第三方的Uri
中执行此操作应用(例如,通过与ACTION_VIEW
一起使用的Intent
startActivity()
。