2013-02-15 44 views
0

我有一个应用程序与ContentProvider使用ContentResolver的让我在自己的应用程序从ContentProvider的数据

<provider android:name="ExampleProvider" 
       android:readPermission="example.contentprovider.READ" 
       android:label="Example Content Provider" 
       android:authorities="example.contentprovider.provider" 
    /> 

,另一个访问提供应用程序请求的权限:

<uses-permission android:name="example.contentprovider.READ" /> 

但是,当我运行第二个应用程序,我得到

E/AndroidRuntime( 818): java.lang.RuntimeException: Unable to start activity 
ComponentInfo{example.contentresolver/example.contentresolver.ContentResolverActivity}: 
java.lang.SecurityException: Permission Denial: reading example.contentprovider.ExampleProvider 
uri content://example.contentprovider.provider/words from pid=818, uid=10045 
requires example.contentprovider.READ, or grantUriPermission() 

为什么我得到这个错误?

View full SSCCE here.

回答

2

你应该在创建该ContentProvider的应用程序首先定义权限,然后使用它。

<permission android:name="example.contentprovider.READ" 
    android:permissionGroup="..." 
    android:label="@string/perm_read" 
    android:description="@string/perm_read_summary" 
    android:protectionLevel="dangerous" /> 
+0

是否需要将标记添加到创建ContentProvider的应用程序或使用*提供程序的应用程序? – 2013-02-15 01:18:43

+0

对不起,我会更新anwser来说清楚。当然是创建ContentProvider的应用程序。 – StarPinkER 2013-02-15 01:19:17

+0

重新访问Android文档后,我发现我错过了那些小细节。感谢您更新yoru答案;-) – 2013-02-15 01:25:34

1

确保android:exported = true;

相关问题