安卓通过ContentResolver添加联系人
2017-02-15 12:41
441 查看
通过ContentResolver添加联系人
效果如下:
核心代码
package com.javen.devicemange.CrazyOne.content; import android.content.ContentUris; import android.content.ContentValues; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.javen.devicemange.R; /** * Created by Administrator on 2017/2/15 0015. * 通过ContentResolver添加联系人 * 需要权限 * <uses-permission android:name="android.permission.READ_CONTACTS"/> * <uses-permission android:name="android.permission.WRITE_CONTACTS"/> */ public class AddContacts extends AppCompatActivity implements View.OnClickListener { private EditText name; private EditText phone; private Button save_contact; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.addcontacts); initView(); } private void initView() { name = (EditText) findViewById(R.id.name); phone = (EditText) findViewById(R.id.phone); save_contact = (Button) findViewById(R.id.save_contact); save_contact.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.save_contact: //填写联系人信息 submit(); Log.d("GsonUtisl", "nameString=" + nameString); Log.d("GsonUtisl", "phoneString=" + phoneString); //创建一个空的ContentValues ContentValues contentValues = new ContentValues(); //向RawContacts.CONTENT_URI执行一个空值插入 //目的是获取系统返回的parseId Uri uri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, contentValues); long parseId = ContentUris.parseId(uri); contentValues.clear(); //联系人绑定parseId contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, parseId); //设置内容类型 contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); //设置联系人名字 contentValues.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, nameString); //向联系人Uri添加联系人名字 getContentResolver().insert(ContactsContract.Data.CONTENT_URI, contentValues); //清理contentValues的数据 contentValues.clear(); contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, parseId); contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); //设置联系人的电话号码 contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneString); //设置电话类型为手机 contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); //向联系人电话号码Uri添加电话号码 getContentResolver().insert(ContactsContract.Data.CONTENT_URI, contentValues); contentValues.clear(); Toast.makeText(this, "联系人数据添加成功", Toast.LENGTH_SHORT).show(); break; } } String nameString; String phoneString; private void submit() { // validate nameString = name.getText().toString().trim(); if (TextUtils.isEmpty(nameString)) { Toast.makeText(this, "nameString不能为空", Toast.LENGTH_SHORT).show(); return; } phoneString = phone.getText().toString().trim(); if (TextUtils.isEmpty(phoneString)) { Toast.makeText(this, "phoneString不能为空", Toast.LENGTH_SHORT).show(); return; } // TODO validate success, do something } }
布局xml代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="name" android:text=""/> <EditText android:id="@+id/phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="12" android:hint="phone" android:inputType="phone"/> <Button android:id="@+id/save_contact" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="save_contact"/> </LinearLayout>
相关文章推荐
- 通过编程添加Outlook联系人和通讯组
- android中添加通过内容提供者添加联系人
- android 通过ContentResolver获得联系人数据
- 安卓中通过循环动态添加了一堆自定义的控件,怎么给这些控件绑定事件?
- 安卓自定义EditText控件,在短信或邮件群发界面,添加联系人的效果
- 在Android Studio中使用androidannotations(安卓注解)的方法(通过Gradle添加)
- 安卓:Loader访问联系人,并使用菜单弹出对话框的形式添加联系人
- 利用ContentValues.put()方法,通过程序添加通讯录里的联系人资料
- 通过编程添加Outlook联系人和通讯组
- 通过ContentResolver调用系统URI实现的读取联系人信息
- 安卓中通过intent组件跳转到系统联系人编辑界面,及具体案例分析
- Phonegap安卓如何通过点击Contact获得联系人列表的名字和电话
- 通过代码添加联系人到通讯录的方法
- 通过ContentResolver获取手机中的联系人信息
- android通过Intent跳转到添加联系人界面的小结
- Android中通过ActionBar为标题栏添加搜索以及分享视窗
- 如何得到用户往通讯录添加新联系人的事件通知
- 什么是使用记录访问权限呢?这是在Android5.0(Api level 21)新添加的,通过该权限我们可以查看设备上其它应用使用情况的统计信息等。
- Android向通讯录添加联系人的一般方法
- C# 通过服务启动窗体(把窗体添加到服务里)实现用户交互的windows服务