目录
bug1.Failed to find provider info for com.example.app.provider
bug1.Failed to find provider info for com.example.app.provider
在用内容提供器的时候,对要请求数据的应用发起请求
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("content://com.example.contentprovidertest.provider/book");
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
报错
E/ActivityThread: Failed to find provider info for com.example.contentprovidertest.provider
解决方法:需要在AndroidManifest.xml添加权限,权限添加之后,就可以运行啦!
<queries>
<provider android:authorities="com.example.contentprovidertest.provider"/>
</queries>
原因:
这是在 Android 11 下才会出现的问题,简单来说,就是出于安全考虑,Android 11 要求应用事先说明需要访问的其他软件包所以添加权限。
bug2:cursor=null
在内容接收端
Uri uri = Uri.parse("content://com.example.contentprovidertest.provider/book");
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
Log.d("lzy", "onClick: "+cursor);
log如下:
这个问题出现的原因有很多,但是我的原因是
uriMatcher.match(uri) 匹配不到uri 所以无论在内容的提供端 还是内容接收端一定要把uri的格式写对。以及,注意/* /# 的区别运用
uri=
content://com.example.contentprovidertest.provider/book
content://app路径.provider/数据
还有两个app一定要同时打开,不然怎么请求数据啊 千万不要关, 千万不要关, 千万不要关。
tip:学会dubug调试程序很多问题都轻松解决。
这只是我的踩坑之路,特此记录下来。