如何向android手机通讯录中添加联系人

本文介绍了一个安卓应用程序如何通过使用ContentProviderOperations API来向手机通讯录中添加新的联系人记录,包括姓名、电话号码及电子邮件等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接在手机的通讯录的数据库中添加列表

相关代码如下

package com.example.test;


import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.os.RemoteException;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


import java.util.ArrayList;  


import android.content.ContentProviderOperation;  
import android.content.ContentProviderResult;  
import android.content.ContentResolver;  
import android.content.OperationApplicationException;
import android.net.Uri;  
import android.provider.ContactsContract;  
import android.test.AndroidTestCase;  
import android.util.Log; 




public class MainActivity extends ActionBarActivity {
private static final String TAG = "ContactsWriteTest";  
 
    //[content://com.android.contacts/raw_contacts]  
    private static final Uri RAW_CONTACTS_URI = ContactsContract.RawContacts.CONTENT_URI;  
    //[content://com.android.contacts/data]  
    private static final Uri DATA_URI = ContactsContract.Data.CONTENT_URI;  
      
    private static final String ACCOUNT_TYPE = ContactsContract.RawContacts.ACCOUNT_TYPE;  
    private static final String ACCOUNT_NAME = ContactsContract.RawContacts.ACCOUNT_NAME;  
      
    private static final String RAW_CONTACT_ID = ContactsContract.Data.RAW_CONTACT_ID;  
    private static final String MIMETYPE = ContactsContract.Data.MIMETYPE;  
      
    private static final String NAME_ITEM_TYPE = ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE;  
    private static final String DISPLAY_NAME = ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME;  
      
    private static final String PHONE_ITEM_TYPE = ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE;  
    private static final String PHONE_NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;  
    private static final String PHONE_TYPE = ContactsContract.CommonDataKinds.Phone.TYPE;  
    private static final int PHONE_TYPE_HOME = ContactsContract.CommonDataKinds.Phone.TYPE_HOME;  
    private static final int PHONE_TYPE_MOBILE = ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE;  
      
    private static final String EMAIL_ITEM_TYPE = ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE;  
    private static final String EMAIL_DATA = ContactsContract.CommonDataKinds.Email.DATA;  
    private static final String EMAIL_TYPE = ContactsContract.CommonDataKinds.Email.TYPE;  
    private static final int EMAIL_TYPE_HOME = ContactsContract.CommonDataKinds.Email.TYPE_HOME;  
    private static final int EMAIL_TYPE_WORK = ContactsContract.CommonDataKinds.Email.TYPE_WORK;  
  
    private static final String AUTHORITY = ContactsContract.AUTHORITY;  

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button bt=(Button)findViewById(R.id.bt);
        
        
        bt.setOnClickListener(new View.OnClickListener() {  
            
            @Override  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                Log.i("TEST", "button onClick");  
         TextView TextView1=(TextView)findViewById(R.id.view);
        ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();  
        
        ContentProviderOperation operation = ContentProviderOperation.newInsert(RAW_CONTACTS_URI)  
                                    .withValue(ACCOUNT_TYPE, null)  
                                    .withValue(ACCOUNT_NAME, null)  
                                    .build();  
        operations.add(operation);  
  
        //添加联系人名称操作  
        operation = ContentProviderOperation.newInsert(DATA_URI)  
                                    .withValueBackReference(RAW_CONTACT_ID, 0)  
                                    .withValue(MIMETYPE, NAME_ITEM_TYPE)  
                                    .withValue(DISPLAY_NAME, "Scott Liu")  
                                    .build();  
        operations.add(operation);  
  
        //添加家庭座机号码  
        operation = ContentProviderOperation.newInsert(DATA_URI)  
                                    .withValueBackReference(RAW_CONTACT_ID, 0)  
                                    .withValue(MIMETYPE, PHONE_ITEM_TYPE)  
                                    .withValue(PHONE_TYPE, PHONE_TYPE_HOME)  
                                    .withValue(PHONE_NUMBER, "01034567890")  
                                    .build();  
        operations.add(operation);  
          
        //添加移动手机号码  
        operation = ContentProviderOperation.newInsert(DATA_URI)  
                                    .withValueBackReference(RAW_CONTACT_ID, 0)  
                                    .withValue(MIMETYPE, PHONE_ITEM_TYPE)  
                                    .withValue(PHONE_TYPE, PHONE_TYPE_MOBILE)  
                                    .withValue(PHONE_NUMBER, "13534567890")  
                                    .build();  
        operations.add(operation);  
  
        //添加家庭邮箱  
        operation = ContentProviderOperation.newInsert(DATA_URI)  
                                    .withValueBackReference(RAW_CONTACT_ID, 0)  
                                    .withValue(MIMETYPE, EMAIL_ITEM_TYPE)  
                                    .withValue(EMAIL_TYPE, EMAIL_TYPE_HOME)  
                                    .withValue(EMAIL_DATA, "scott@android.com")  
                                    .build();  
        operations.add(operation);  
  
        //添加工作邮箱  
        operation = ContentProviderOperation.newInsert(DATA_URI)  
                                    .withValueBackReference(RAW_CONTACT_ID, 0)  
                                    .withValue(MIMETYPE, EMAIL_ITEM_TYPE)  
                                    .withValue(EMAIL_TYPE, EMAIL_TYPE_WORK)  
                                    .withValue(EMAIL_DATA, "scott@msapple.com")  
                                    .build();  
        operations.add(operation);  
          
        ContentResolver resolver = getBaseContext().getContentResolver();  
        //批量执行,返回执行结果集  
        ContentProviderResult[] results = null;
try {
results = resolver.applyBatch(AUTHORITY, operations);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  
        for (ContentProviderResult result : results) {  
            Log.i(TAG, result.uri.toString());  
            TextView1.setText(result.uri.toString());
        }  
            }  
        });  
        
    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

特别注意在打开通讯录的数据库的权限

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值