是否可以为其他应用程序提供文件提供程序?
清单文件
...
<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)的应用程序
提供者将有权访问它。
我试过将exported设置为true,但出现了这个异常
Unable to get provider android.support.v4.content.FileProvider: java.lang.SecurityException: Provider must not be exported
为什么我不能导出文件提供程序? 最佳答案
是否可以为其他应用程序提供文件提供程序?
对.这通常是重点。
为什么我不能导出文件提供程序?
因为这不是你使用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()
)。
另请参见the training guide on sharing files。