这个问题搞了我一下午了,总算搞定了!
有的教程上的配置并不完善!比如黑马!坑死人
被调用应用程序的目录结构:
被调用的Manifest.xml的配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bao.mysqlite"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.bao.mysqlite" />
<permission
android:name="com.baobao.hello.permission"
android:protectionLevel="normal">
</permission>
<span style="white-space:pre"> </span><application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="android.test.runner" />
<activity
android:name="com.bao.mysqlite.ui.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="com.bao.mysqlite.provider.BaoProvider"
android:authorities="com.baobao.hello.ok"
android:exported="true"
android:permission="com.baobao.hello.permission"/>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bao.myother"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.bao.myother"/>
<uses-permission
android:name="com.baobao.hello.permission"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="android.test.runner" />
<activity
android:name="com.bao.myother.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
测试方法:
<span style="white-space:pre"> </span>public void testProvider() {
// 获取一个ContentResovler, 它是一个可以用来访问ContentProvider的工具
ContentResolver resolver = getContext().getContentResolver();
// 通过一个Uri指向刚刚创建的ContentProvider
Uri uri = Uri.parse("content://com.baobao.hello.ok");
// 用ContentResovler访问ContentProvider
resolver.query(uri, null, null, null, null);
int a = resolver.delete(uri, null, null);
System.out.println(a);
}
public void testInsert() {
ContentResolver resolver = getContext().getContentResolver();
Uri uri = Uri.parse("content://com.baobao.hello.ok");
ContentValues values = new ContentValues(); // 用来装载数据的Map集合
values.put("name", "insert");
values.put("balance", 100);
Uri resultUri = resolver.insert(uri, values); // 把数据插入到指定的内容提供者
System.out.println(resultUri);
}
如果是这个问题:
java.lang.IllegalArgumentException: Unknown URL content://*****
多半是地址无法解析,原因一般常见有2个
1、 URL 地址错误
2、权限问题
如果是URL 地址错误 有可能是没配置 <provider...> 或者配置错误,正确方法详见上面!
如果是权限问题 那就要配置uses-permission 记得调用方的配置文件也要配置!
</pre><p></p><pre>