从《第一行代码:Android 第三版》中,复刻了ProviderTest程序,向DatabaseTest程序的ContentProvider写入数据的时候,遇到按下按钮直接闪退的问题。
查看Logcat,抛出异常:
- java.lang.IllegalArgumentException: Unknown URL content:
 -  
Failed to find provider info for com.example.databasetest.provider
 
仔细检查确定没有拼写错误,一番搜索,发现Android高版本收紧了权限以防止程序随便访问其他程序的文件,所以需要在Manifest中加入语句:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="...">
    ...
    ...
    <uses-permission android:name="DatabaseProvider._READ_PERMISSION" />
    <uses-permission android:name="DatabaseProvider._WRITE_PERMISSION" />
    <queries>
        <package android:name="com.example.databasetest" />
    </queries>
    ...
    ...
    <application> ... 
- 获取provider的读写权限
 - 在queries标签中声明要访问的程序的包名
 
加上上述代码以后再点击按钮,就不再闪退。









