在查资料的时候,有人解释provider可以只开放部分权限,如图中例子所述
上图
这是实际操作中,却是查询到了所有的数据
这是我的代码,数据的提供者,只开放notes路径下的数据
<provider
android:name="NotePadProvider"
android:authorities="com.google.provider.NotePad"
android:exported="true"
android:readPermission="wei.permission.READ_CONTENTPROVIDER"
>
<path-permission android:pathPrefix="/notes" android:readPermission="wei.permission.READ_CONTENTPROVIDER"/>
</provider>
这是另外一个应用的代码,获取第一个应用的数据
// Uri.parse 方法根据指定字符串创建一个 Uri 对象
public static final Uri CONTENT_URI = Uri.parse("content://"
+ AUTHORITY + "/notes2");
下面看下我的输出结果:
这是第一个应用,插入两条数据,并输出url路径
12-22 11:11:15.369: D/Provider(23593): 150----------插入数据----->content://com.google.provider.NotePad/notes/1
12-22 11:11:15.408: D/Provider(23593): 150----------插入数据----->content://com.google.provider.NotePad/notes2/2
12-22 11:11:15.424: D/Activity01(23593): 45------------>id:2 title:标题2
12-22 11:11:15.424: D/Activity01(23593): 45------------>id:1 title:标题1
这是第二个应用的输出结果,调用url路径,以及输出的全部数据
12-22 11:12:55.431: I/System.out(23593): NotePad--------211------->content://com.google.provider.NotePad/notes2
12-22 11:12:55.455: D/MainActivity(24001): 33----------->id:2 title:标题2
12-22 11:12:55.455: D/MainActivity(24001): 33----------->id:1 title:标题1
实际上notes,notes2中的数据都获取到了,有人用过provider的只开放部分路径么