contentprovider踩坑之路之Failed to find provider info for com.example.app.provider和cursor=null空指针问题

目录

bug1.Failed to find provider info for com.example.app.provider

bug2:cursor=null


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调试程序很多问题都轻松解决。

这只是我的踩坑之路,特此记录下来。


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值