从《第一行代码: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标签中声明要访问的程序的包名
加上上述代码以后再点击按钮,就不再闪退