以编程方式使用intent修改或更新联系人

时间:2017-10-19 05:59:01

标签: android android-intent

我想在android联系窗口中更新或修改用户联系人详细信息。 下面的代码工作正常,但它没有将正确的电话号码传递到android联系人编辑器窗口。

这是我的代码

 private void modifyContact() {
         phonenumber="0711236763";

    mSelectedContactUri=Uri.parse(phonenumber);

    mCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);


    if (mCursor != null && mCursor.moveToFirst()) {
        mLookupKeyIndex = mCursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY);
        mCurrentLookupKey = mCursor.getString(mLookupKeyIndex);
        mIdIndex = mCursor.getColumnIndex(ContactsContract.Contacts._ID);
        mCurrentId = mCursor.getLong(mIdIndex);
    }

    mSelectedContactUri = ContactsContract.Contacts.getLookupUri(mCurrentId, mCurrentLookupKey);
    Intent editIntent = new Intent(Intent.ACTION_EDIT);

    editIntent.setDataAndType(mSelectedContactUri, ContactsContract.Contacts.CONTENT_ITEM_TYPE);
    editIntent.putExtra("finishActivityOnSaveCompleted", true);

    startActivity(editIntent);

    }

变量phonenumber是我想要修改或更新的电话号码。

1 个答案:

答案 0 :(得分:1)

确保在从中访问数据之前正确初始化Cursor。"它适用于我的代码。

1.尝试通过moveToFirst定位光标,然后再从中读取数据。

2.检查null-> if(c!= null&& c.moveToFirst()){}

3.检查count-> (c!= null&& c.getCount()> 0&& c.moveToFirst()){}