nana4ever
2013-01-04 09:20
采纳率: 95.8%
浏览 3.4k

在android中如何添加新的联系方式

我使用以下的代码在android电话簿中添加新的联系方式。程序可以正常运行。但是当我打开电话簿菜单时,没有新添的那个联系方式。请求大家帮忙我找出这个问题缘由,谢谢!

import android.app.Activity;
import android.os.Bundle;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.provider.ContactsContract;

import android.widget.TextView;
import android.widget.Toast;

public class AddContacts extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try
        {
            ContentResolver cr = this.getContentResolver();
            ContentValues cv = new ContentValues();
            cv.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "New Name");
            cv.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "1234567890");
            cv.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
            cr.insert(ContactsContract.RawContacts.CONTENT_URI, cv);

            Toast.makeText(this, "Contact added", Toast.LENGTH_LONG).show();
        }
        catch(Exception e)
        {
            TextView tv = new TextView(this);
            tv.setText(e.toString());
            setContentView(tv);
        }
    }
}
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • balmy 2013-01-04 16:02
    已采纳

    那你的数据写哪去了啊? 一个联系人的多个号码在保存数据库contact2.db里data表,data表有data1到data13(也可能是到data11就没了,记不清了)分别记录着不同的联系方式,像电话 QQ MSN 邮箱这类数据
    你的URI用raw_contacts表的URI,是不是要用data表的URI啊,断点调试下你的程序还有联系人的provider代码看看你数据跑哪去了就知道怎么回事了。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • LiDaming_and 2013-01-05 03:08

    我在这里帖一段代码。是之前我添加一个新的联系方式时用的。希望能帮的上你。

    String DisplayName = "XYZ";
     String MobileNumber = "123456";
     String HomeNumber = "1111";
     String WorkNumber = "2222";
     String emailID = "email@nomail.com";
     String company = "bad";
     String jobTitle = "abcd";
    
     ArrayList < ContentProviderOperation > ops = new ArrayList < ContentProviderOperation > ();
    
     ops.add(ContentProviderOperation.newInsert(
     ContactsContract.RawContacts.CONTENT_URI)
         .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
         .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
         .build());
    
     //------------------------------------------------------ Names
     if (DisplayName != null) {
         ops.add(ContentProviderOperation.newInsert(
         ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
         ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
             .withValue(
         ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
         DisplayName).build());
     }
    
     //------------------------------------------------------ Mobile Number                     
     if (MobileNumber != null) {
         ops.add(ContentProviderOperation.
         newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, MobileNumber)
             .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
         ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
             .build());
     }
    
     //------------------------------------------------------ Home Numbers
     if (HomeNumber != null) {
         ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, HomeNumber)
             .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
         ContactsContract.CommonDataKinds.Phone.TYPE_HOME)
             .build());
     }
    
     //------------------------------------------------------ Work Numbers
     if (WorkNumber != null) {
         ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, WorkNumber)
             .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
         ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
             .build());
     }
    
     //------------------------------------------------------ Email
     if (emailID != null) {
         ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
         ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.Email.DATA, emailID)
             .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
             .build());
     }
    
     //------------------------------------------------------ Organization
     if (!company.equals("") && !jobTitle.equals("")) {
         ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
             .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
             .withValue(ContactsContract.Data.MIMETYPE,
         ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
             .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company)
             .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
             .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, jobTitle)
             .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
             .build());
     }
    
     // Asking the Contact provider to create a new contact                 
     try {
         getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
     } catch (Exception e) {
         e.printStackTrace();
         Toast.makeText(myContext, "Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show();
     } 
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题