zoukankan      html  css  js  c++  java
  • Android -- ContentProvider, 读取和保存系统 联系人

    1. 示例代码

    需要的读写联系人的权限

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

    读联系人代码

    public void click(View view) {
    		ContentResolver resolver = getContentResolver();
    		// raw_contact 表的uri
    		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    		// data 表的uri
    		Uri dataUri = Uri.parse("content://com.android.contacts/data");
    		Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
    				null, null, null);
    		while (cursor.moveToNext()) {
    			String id = cursor.getString(0);
    			//系统删除联系人的时候不会删除全部db中的信息,只是将id置为 null
    			if (id != null) {
    				Cursor dataCursor = resolver.query(dataUri, new String[] {
    						"data1", "mimetype" }, "raw_contact_id=?",
    						new String[] { id }, null);
    				while (dataCursor.moveToNext()) {
    					String data = dataCursor.getString(0);
    					String mimetype = dataCursor.getString(1);
    					System.out.println("data:" + data);
    					System.out.println("mimetype:" + mimetype);
    
    				}
    				dataCursor.close();
    				System.out.println("----------");
    			}
    		}
    		cursor.close();
    	}

    写联系人代码

    public void click(View view) {
    		String name = et_name.getText().toString().trim();
    		String phone = et_phone.getText().toString().trim();
    		String email = et_email.getText().toString().trim();
    
    		if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)) {
    			Toast.makeText(this, "姓名或者电话不能为空", 1).show();
    			return;
    		}
    		// 把数据写入到系统的联系人.
    		ContentResolver resolver = this.getContentResolver();
    		// ----------在raw_contant表中添加一条新的id---------------
    		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    		// 插入联系人 必须要知道 新的联系人的id
    		Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
    				null, null, "contact_id");
    		int contact_id;
    		if (cursor.moveToLast()) {
    			contact_id = cursor.getInt(0) + 1; // 数据库里面有数据 最后一条联系人的id + 1
    		} else {// 原先数据库是空的 从第一个联系人开始
    			contact_id = 1;
    		}
    		ContentValues values = new ContentValues();
    		values.put("contact_id", contact_id);
    		resolver.insert(uri, values);
    		// -----------------------------
    
    		// ------------在data表里面 添加id对应的数据-------------
    		Uri dataUri = Uri.parse("content://com.android.contacts/data");
    
    		// 插入姓名
    		ContentValues nameValue = new ContentValues();
    		nameValue.put("data1", name);
    		nameValue.put("raw_contact_id", contact_id);
    		nameValue.put("mimetype", "vnd.android.cursor.item/name");
    		resolver.insert(dataUri, nameValue);
    
    		// 插入电话
    		ContentValues phoneValue = new ContentValues();
    		phoneValue.put("data1", phone);
    		phoneValue.put("raw_contact_id", contact_id);
    		phoneValue.put("mimetype", "vnd.android.cursor.item/phone_v2");
    		resolver.insert(dataUri, phoneValue);
    
    		// 插入邮箱
    		if (!TextUtils.isEmpty(email)) {
    			ContentValues emailValue = new ContentValues();
    			emailValue.put("data1", email);
    			emailValue.put("raw_contact_id", contact_id);
    			emailValue.put("mimetype", "vnd.android.cursor.item/email_v2");
    			resolver.insert(dataUri, emailValue);
    		}
    
    		Toast.makeText(this, "插入数据成功", 0).show();
    	}




     

  • 相关阅读:
    快速修改elementUI组件样式
    设置占位符颜色!
    缩放屏幕的时候banner被压缩变形!
    less一些用法整理
    CentOS 7 的目录结构介绍
    为什么需要VMware的 快照、克隆?
    虚拟机概述
    Linux的简单介绍
    VMware克隆已安装的虚拟机
    【vim使用】分屏命令、操作分屏
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3647978.html
Copyright © 2011-2022 走看看