android添加联系人(直接添加到联系人数据库)
16lz
2022-07-28
- 添加联系人姓名、手机、头像。。。
- java核心代码
- packagecom.kaka.addContact;
- importjava.io.ByteArrayOutputStream;
- importandroid.app.Activity;
- importandroid.content.ContentUris;
- importandroid.content.ContentValues;
- importandroid.graphics.Bitmap;
- importandroid.graphics.BitmapFactory;
- importandroid.net.Uri;
- importandroid.os.Bundle;
- importandroid.provider.ContactsContract;
- importandroid.provider.ContactsContract.CommonDataKinds.Email;
- importandroid.provider.ContactsContract.CommonDataKinds.Im;
- importandroid.provider.ContactsContract.CommonDataKinds.Phone;
- importandroid.provider.ContactsContract.CommonDataKinds.Photo;
- importandroid.provider.ContactsContract.CommonDataKinds.StructuredName;
- importandroid.provider.ContactsContract.Contacts.Data;
- importandroid.provider.ContactsContract.RawContacts;
- publicclassMainextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- booleanresult=insert("kaka","110","111@qq.com",
- "111");
- System.out.println("insertresult"+result);
- }
- publicbooleaninsert(Stringgiven_name,Stringmobile_number,
- Stringwork_email,Stringim_qq){
- try{
- ContentValuesvalues=newContentValues();
- //下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId
- UrirawContactUri=getContentResolver().insert(
- RawContacts.CONTENT_URI,values);
- longrawContactId=ContentUris.parseId(rawContactUri);
- //向data表插入姓名数据
- if(given_name!=""){
- values.clear();
- values.put(Data.RAW_CONTACT_ID,rawContactId);
- values.put(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE);
- values.put(StructuredName.GIVEN_NAME,given_name);
- getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
- values);
- }
- //向data表插入电话数据
- if(mobile_number!=""){
- values.clear();
- values.put(Data.RAW_CONTACT_ID,rawContactId);
- values.put(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE);
- values.put(Phone.NUMBER,mobile_number);
- values.put(Phone.TYPE,Phone.TYPE_MOBILE);
- getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
- values);
- }
- //向data表插入Email数据
- if(work_email!=""){
- values.clear();
- values.put(Data.RAW_CONTACT_ID,rawContactId);
- values.put(Data.MIMETYPE,Email.CONTENT_ITEM_TYPE);
- values.put(Email.DATA,work_email);
- values.put(Email.TYPE,Email.TYPE_WORK);
- getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
- values);
- }
- //向data表插入QQ数据
- if(im_qq!=""){
- values.clear();
- values.put(Data.RAW_CONTACT_ID,rawContactId);
- values.put(Data.MIMETYPE,Im.CONTENT_ITEM_TYPE);
- values.put(Im.DATA,im_qq);
- values.put(Im.PROTOCOL,Im.PROTOCOL_QQ);
- getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
- values);
- }
- //向data表插入头像数据
- BitmapsourceBitmap=BitmapFactory.decodeResource(getResources(),
- R.drawable.icon);
- finalByteArrayOutputStreamos=newByteArrayOutputStream();
- //将Bitmap压缩成PNG编码,质量为100%存储
- sourceBitmap.compress(Bitmap.CompressFormat.PNG,100,os);
- byte[]avatar=os.toByteArray();
- values.put(Data.RAW_CONTACT_ID,rawContactId);
- values.put(Data.MIMETYPE,Photo.CONTENT_ITEM_TYPE);
- values.put(Photo.PHOTO,avatar);
- getContentResolver().insert(ContactsContract.Data.CONTENT_URI,
- values);
- }
- catch(Exceptione){
- returnfalse;
- }
- returntrue;
- }
- }
Java代码
- Manifest中添加读写联系人数据权限
- <?xmlversion="1.0"encoding="utf-8"?>
- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="com.kaka.addContact"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdkandroid:minSdkVersion="8"/>
- <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
- <activityandroid:name=".Main"
- android:label="@string/app_name">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- </application>
- <uses-permissionandroid:name="android.permission.READ_CONTACTS"/>
- <uses-permissionandroid:name="android.permission.WRITE_CONTACTS"/>
- </manifest>
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例
- 《Android开发从零开始》——25.数据存储(4)
- Android系统配置数据库注释(settings.db)
- Android中不同应用间实现SharedPreferences数据共享
- android图表ichartjs
- Android内容提供者源码
- Android开发者实用代码片段 与大家分享
- android SharedPreferences