【问题标题】:Modify SipAddress Programmatically以编程方式修改 SipAddress
【发布时间】:2013-12-04 12:18:51
【问题描述】:

我知道如何以编程方式在联系人中添加/编辑电子邮件地址,但我不知道如何在联系人中检索/修改 SIP_address/Internet_call,我已经阅读了许多基于它的文档,包括 Modifying contact information。请帮我实现这个

【问题讨论】:

    标签: android android-contacts android-cursor


    【解决方案1】:

    更改 Sip 地址与更改联系人的电子邮件地址完全相同。只需使用ContactsContract.CommonDataKinds.SipAddress 而不是ContactsContract.CommonDataKinds.Email

    咖啡前的小例子:

    import java.util.ArrayList;
    import android.content.ContentProviderOperation;
    import android.provider.ContactsContract;
    import android.provider.ContactsContract.Data;
    import android.provider.ContactsContract.CommonDataKinds.SipAddress;
    //[...]
    private String mSipAddress = "cecin\'estpasunesipaddress";
    //[...]
        try {
            ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    
            ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
               .withSelection(Data.RAW_CONTACT_ID + " = ?", new String[] {mRawContactId})
               .withSelection(Data._ID + " = ?", new String[] {mDataId})
               .withValue(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE)
               .withValue(Data.DATA1, mSipAddress)
               .withValue(SipAddress.TYPE, SipAddress.TYPE_HOME)
               .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    }
    //[...]
    

    有关如何获取此处未声明的字段的示例,请参阅this GitHub 存储库。我是从this 回答中得到的。 Relevant documentation.

    【讨论】:

    • 嘿,很抱歉回来晚了。我已将您的代码添加到插入(编辑了几行)和更新部分代码中,这就是我调试它时得到的结果并收到“联系人有当我检查更新的联系人时,已停止”警报。即使联系人已经有 sip 地址,它也会转到“插入 sip 地址”代码块。我相信 selectioArgs 对于更新给定项目中的 SIP 地址是不正确的。
    • 啊,我现在看到您查看了我之前提到的答案,很好。我现在无法测试代码,因为我在没有 android sdk 的操作系统上,但它应该可以工作。您是说您可以使用相同的代码更改一些其他数据,例如电子邮件地址吗?
    • 是的..我只是将 Email.something 替换为 SIpAddress.something。
    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多