首页 > 系统 > Android > 正文

在Android代码示例中插入新联系人

2019-11-09 14:50:03
字体:
来源:转载
供稿:网友

步骤1:将以下包添加到您要将新联系人插入到联系人列表中的java类中。 您可以将以下包添加到您的活动的类中以轻松测试功能。 然后你可以将代码移动到任何java类。

12345678910import android.content.ContentPRoviderOperation;import android.content.ContentProviderResult;import android.content.Context;import android.content.OperationapplicationException;import android.os.RemoteException;import android.provider.ContactsContract;import android.provider.ContactsContract.CommonDataKinds.Phone;import android.provider.ContactsContract.CommonDataKinds.StructuredName;import android.provider.ContactsContract.Data;import android.provider.ContactsContract.RawContacts;

第2步:现在在您的java类中添加以下函数WritePhoneContact(),其中已经添加了包(在上面的步骤1中提到)。 一旦你将下面的函数添加到你的java类,你必须调用该函数来添加一个新的联系人到Android联系人列表。 要测试功能,您可以在Activity的类中添加以下函数(代码片段)。注意:您可以在代码中找到详细的内联代码描述。

1234567891011121314151617181920212223242526272829303132333435363738394041424344publicvoidWritePhoneContact(StringdisplayName,Stringnumber,Contextcntx/*App or Activity Ctx*/){Contextcontetx=cntx;//Application's context or Activity's contextStringstrDisplayName=  displayName;// Name of the Person to addStringstrNumber=  number;//number of the person to add with the ContactArrayList<ContentProviderOperation>cntProOper=newArrayList<ContentProviderOperation>();        intcontactIndex=cntProOper.size();//ContactSize         //Newly Inserted contact      // A raw contact will be inserted ContactsContract.RawContacts table in contacts database.        cntProOper.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)//Step1                .withValue(RawContacts.ACCOUNT_TYPE,null)                .withValue(RawContacts.ACCOUNT_NAME,null).build());         //Display name will be inserted in ContactsContract.Data table        cntProOper.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)//Step2                .withValueBackReference(Data.RAW_CONTACT_ID,contactIndex)                .withValue(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE)                .withValue(StructuredName.DISPLAY_NAME,strDisplayName)// Name of the contact                .build());        //Mobile number will be inserted in ContactsContract.Data table        cntProOper.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)//Step 3                .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,contactIndex)                .withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE)                .withValue(Phone.NUMBER,strNumber)// Number to be added                .withValue(Phone.TYPE,Phone.TYPE_MOBILE).build());//Type like HOME, MOBILE etc        try        {                // We will do batch operation to insert all above data         //Contains the output of the app of a ContentProviderOperation.         //It is sure to have exactly one of uri or count set            ContentProviderResult[]contentProresult=null;            contentProresult=contetx.getContentResolver().applyBatch(ContactsContract.AUTHORITY,cntProOper);//apply above data insertion into contacts list         }        catch(RemoteExceptionexp)        {            //logs;        }        catch(OperationApplicationExceptionexp)        {            //logs        }      }

代码说明:

1WritePhoneContact(String displayName, String number,Context cntx /*App or Activity Ctx*/)

在上面的函数中,你可以传递参数如下。String displayName:联系人的姓名(例如John),需要在Android联系人列表中添加。字符串number:需要使用联系人(本示例中为John)添加的人员的移动号码(示例:9999999999)。上下文cntx:这不是你的Activity的上下文,或者你可以提供你的应用程序的上下文。 只是为了测试的目的,你可以从你的Activity的onCreate()函数调用上面的函数,就像下面的步骤3。步骤3:调用上面提到的函数WritePhoneContact()如下。

1234567891011@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_contacts_backup_restore);                // Pass below variable <em>cntx</em> into the WritePhoneContact() function as third variable.<em>Contextcntx</em>=getApplicationContext();// get application context                //Now call below function to do the real task for you.                WritePhoneContact("John","9999999999",cntx);         }

注意:如果您要调用本机“联系人活动”以插入新联系人,则可以按照以下代码。

1234//Add below packages in your java classimport android.net.Uri;import android.content.Intent;import android.provider.ContactsContract;

1234567//Then add below code for inserting a new contact using intent//create a new intent for inserting contactIntentcontactIntent=newIntent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT,ContactsContract.Contacts.CONTENT_URI);contactIntent.setData(Uri.parse("tel:+919999999999"));//Add the mobile number herecontactIntent.putExtra(ContactsContract.Intents.Insert.PHONE,"John");//ADD contact name here        //Below Start activity function will display the Add contacts native screen along with your input data        startActivity(contactIntent);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表