应用 A ,其中包含以下AndroidManifest.xml
内容(名称和权限已修订)
<provider
android:name="test.provider"
android:authorities="test.content_authority"
android:exported="true" />
使用以下ContentProvider类:
public class Provider extends ContentProvider {
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// [...]
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// [...]
}
}
从另一个应用 B 我查询此提供商时没有问题:
String URL = "content://test.content_authority/data";
Uri data = Uri.parse(URL);
Cursor c = getContentResolver().query(data, null, null, null, null);
但是当我尝试update
一个条目时:
String URL = "content://test.content_authority/data";
Uri favarticles = Uri.parse(URL);
ContentValues values = new ContentValues();
values.put("key", "value");
getContentResolver().update(favarticles, values, null, null);
我得到以下异常:
java.lang.UnsupportedOperationException: Unknown Uri: content://test.content_authority/data
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:169)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.update(ContentProviderNative.java:560)
at android.content.ContentResolver.update(ContentResolver.java:1316)
at com.example.test_contentprovider.MainActivity.updateEntryTest(MainActivity.java:119)
有什么明显的错误吗?我无权访问提供商吗?当我可以使用Unknown Uri
访问此URI时,为什么会出现query
例外?