【问题标题】:How to delete sim card contact in android如何在android中删除sim卡联系人
【发布时间】:2015-01-05 14:11:00
【问题描述】:

下面是我从手机中删除联系人的代码

Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
                Uri.encode(phone));
        Cursor cur = mContext.getContentResolver().query(contactUri, null,
                null, null, null);
        boolean flag = false;
        try {
            if (cur.moveToFirst()) {
                do {
                    if (cur.getString(
                            cur.getColumnIndex(PhoneLookup.DISPLAY_NAME))
                            .equalsIgnoreCase(name)) {
                        String lookupKey = cur
                                .getString(cur
                                        .getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                        Uri uri = Uri.withAppendedPath(
                                ContactsContract.Contacts.CONTENT_LOOKUP_URI,
                                lookupKey);
                        mContext.getContentResolver().delete(uri, null, null);
                        flag=true;
                        break;
                    }

                } while (cur.moveToNext());
            }

        } catch (Exception e) {
            flag=false;
            System.out.println(e.getStackTrace());
        }

从手机中删除联系人工作正常,但 sim 联系人删除临时意味着当我的手机重新启动时,我的联系人恢复了我删除的。 帮助找到解决此问题的方法。 谢谢...

【问题讨论】:

标签: android android-contacts android-contentresolver sim-card


【解决方案1】:

你要使用的URI是这个:content://icc/adn/

此外,您必须使用namenumber 来删除联系人。

试试这样的东西(对我有用):

Uri simUri = Uri.parse("content://icc/adn/");
ContentResolver mContentResolver = this.getContentResolver();
Cursor c = mContentResolver.query(simUri, null, null, null, null);
if (c.moveToFirst())
{
    do
    {
        if (/* your condition here */)
        {
            mContentResolver.delete(
                simUri,
                "tag='" + c.getString(c.getColumnIndex("name")) +
                "' AND " +
                "number='" + c.getString(c.getColumnIndex("number")) + "'"
                , null);
            break;
        }                       
    }
    while (c.moveToNext());
}

当然,不要忘记这些权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

【讨论】:

  • 感谢您的回复,我同时读取手机和 SIM 卡,如何识别来自 SIM 卡或手机的联系人。
  • 它们在两个不同的地方,由两个不同的 Uri 标识。每个联系人都来自于或其他地方。有什么问题?
  • 好的,我明白你的意思,但是当我有双罪设备时会发生什么,目前使用这个 uri 我只读我的主 sim 联系人
  • 好问题。我想这都是关于当前激活了哪个 sim 卡。我不认为两个 sim 卡可以同时读取,但我可能是错的。
猜你喜欢
  • 2014-10-05
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
相关资源
最近更新 更多