以编程方式修改 SipAddress

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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。

以上是关于以编程方式修改 SipAddress的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 5 中以编程方式修改 UINavigationcontroller

如何以编程方式修改 WCF app.config 端点地址设置?

以编程方式修改/创建vcproj文件

你能以编程方式修改 UICollectionView 滚动方向吗?

SpriteKit:以编程方式修改 SKScene 框架

在中等信任下以编程方式修改配置部分