Android getContentResolver插入不返回完整URI

时间:2013-06-25 02:38:02

标签: insert uri android-contentprovider

当我为另一个活动提出意图时,我有一个被换掉的活动。 onPause调用saveState()来保存到目前为止的工作:

private void saveState() {
    ...
    ...
    if (myUri == null) {
        // Inserting a new record
*** myUri = getContentResolver().insert(ContentProvider.CONTENT_URI, values);
    } else {
        // Update an existing record
        getContentResolver().update(myUri, values, null, null);
    }
}

在调用getContentResolver()之前,ContentProvider.CONTENT_URI ='content://nz.co.bkd.extraTime.contentprovider/times'。

通话结束后,myUri ='times /#',其中#=行ID。我的问题是;返回的uri的'content:...'前缀在哪里?

在调用期间,调用ContentResolver.java并返回CreatedRow uri

ContentResolver.java
....
....
public final Uri insert(Uri url, ContentValues values)
{
    IContentProvider provider = acquireProvider(url);
    if (provider == null) {
        throw new IllegalArgumentException("Unknown URL " + url);
    }
    try {
        long startTime = SystemClock.uptimeMillis();
***     Uri createdRow = provider.insert(url, values);
        long durationMillis = SystemClock.uptimeMillis() - startTime;
        maybeLogUpdateToEventLog(durationMillis, url, "insert", null /* where */);
        return createdRow;
    } catch (RemoteException e) {
        // Arbitrary and not worth documenting, as Activity
        // Manager will kill this process shortly anyway.
        return null;
    } finally {
        releaseProvider(provider);
    }
}

此时,createdRow ='times /#'。

记录实际上已保存在Sqlite数据库中。

我是否必须在我的代码中添加uri前缀,还是应该返回完整的uri?

0 个答案:

没有答案