如何使FileProvider可用于其他应用程序?

时间:2014-06-06 21:10:24

标签: android provider android-contentresolver android-fileprovider

是否可以将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?

1 个答案:

答案 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()

另见the training guide on sharing files