.update()ContentProvider会抛出Unknown Uri,即使.query()有效吗?

时间:2014-10-21 12:21:45

标签: android android-contentprovider

应用 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例外?

非常感谢你。

0 个答案:

没有答案