android - 请问安卓中自定义的内容提供器对外声明唯一uri的语句在哪?

 mobiledu2502852923 发布于 2022-10-31 00:14

最近在写自定义提供其遇到了问题,第三方程序不能访问内容提供器?
我猜想对外声明的语句在mainfest里面,但是比对之后发现没错,所以就不知道那里出错了?

下面是外部程序添加数据向内容提供器添加数据的代码:

Uri uri= Uri.parse("content://com.example.databasetest.provider/book");
                ContentValues values=new ContentValues();
                values.put("name","A Clash of Kings");
                values.put("author","George Martin");
                values.put("pages",1040);
                values.put("price",22.85);
                Uri newUri=getContentResolver().insert(uri,values);
                String newId=newUri.getPathSegments().get(1);

这是mainfest:

    android:authorities="com.example.databasestest.provider"
    android:name="com.example.sqlite.DatabaseProvider"
    android:exported="true">

     

这是报错信息:

FATAL EXCEPTION: main Process:com.example.providertest, PID: 10088 java.lang.IllegalArgumentException: Unknown URL content://com.example.databasetest.provider/book

访问的是里面一个叫book的表,如果还需要其他代码,告诉我我会提交上来!谢谢。

1 个回答
    1. 在AndroidManifest文件中,<provider>必须在<application>下面,你先检查下你的<provider>是在<application>下面还是在某个<activity>下面;

    2. 试试把android:exported="true"改为android:exported="false"

    2022-10-31 22:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有