9

是否可以让其他应用程序使用 FileProvider?

清单.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>
...

文档

false:提供程序不可用于其他应用程序。设置 android:exported="false" 以限制对您的应用程序的提供程序的访问。只有与提供者具有相同用户 ID (UID) 的应用程序才能访问它。

我尝试将 export 设置为 true 但出现此异常 Unable to get provider android.support.v4.content.FileProvider: java.lang.SecurityException: Provider must not be exported为什么我无法导出 FileProvider ?

4

1 回答 1

20

是否可以让其他应用程序使用 FileProvider?

是的。这通常是重点。

为什么我不能导出 FileProvider ?

因为那不是您使用FileProvider.

背后的要点FileProvider是为第三方应用程序提供对文件的选择访问权限。您可以通过FLAG_GRANT_READ_URI_PERMISSION和/或来执行此操作FLAG_GRANT_WRITE_URI_PERMISSIONIntent用于将您的提供者的Uri值之一传递给第三方应用程序(例如,通过ACTION_VIEW Intent使用 with startActivity())。

另请参阅有关共享文件的培训指南

于 2014-06-06T21:42:42.543 回答