android 简单的读写联系人

一、读取联系人

(1).从raw_contact表读 contact_id

(2).从data表中读取data1

(3).从mimetypes读取mimetype

1.AndroidManifest.xml 添加content权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.writecontact"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

2.MainActivity.java

package com.example.readcontact;

import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void click(View view)
    {
        //获取raw_contact表中的数据
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        //获取view_data视图中的数据
        Uri datauri = Uri.parse("content://com.android.contacts/data");

        ContentResolver resovler = getContentResolver();

        Cursor cursor = resovler.query(uri, null, null, null, null);

        while(cursor.moveToNext())
        {
            String id = cursor.getString(cursor.getColumnIndex("contact_id"));
            System.out.println("----------raw_contact start-----------");
            System.out.println("id="+id);
            if(id!=null)
            {
                //注意 这里获取的事data_view视图中的数据  不是data表中的数据
                Cursor dataCursor = resovler.query(datauri, null, "raw_contact_id=?", new String[]{id}, null);
                while(dataCursor.moveToNext())
                {

                    String data = dataCursor.getString(dataCursor.getColumnIndex("data1"));
                    String mimetype = dataCursor.getString(dataCursor.getColumnIndex("mimetype"));
                    System.out.println("data="+data+",mimetype"+mimetype);

                }

                dataCursor.close();
            }

            System.out.println("---------raw_contact end----------");
        }
        cursor.close();

    }

}

二、写联系人

1、同读取联系人一样添加权限

2、MainActivity.java

package com.example.writecontact;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void click(View view)
    {
        //获取raw_contact表中的数据
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        //获取view_data视图中的数据
        Uri datauri = Uri.parse("content://com.android.contacts/data");

        ContentResolver resovler = getContentResolver();

        Cursor cursor = resovler.query(uri, new String[]{"_id"}, null, null, null);
        cursor.moveToLast();
        int lastId = cursor.getInt(0);
        int contact_id = lastId+1;
        ContentValues values = new ContentValues();
        values.put("contact_id", contact_id);
        //向 raw_contact表中添加数据
        resovler.insert(uri, values);

        //向data表中添加phone数据
        ContentValues phoneValues = new ContentValues();
        phoneValues.put("data1", "77777");
        phoneValues.put("mimetype", "vnd.android.cursor.item/phone_v2");
        phoneValues.put("raw_contact_id", contact_id);
        //向 raw_contact表中添加数据
        resovler.insert(datauri, phoneValues);

        //向data表中添加name数据
        ContentValues nameValues = new ContentValues();
        nameValues.put("data1", "zhaoqi");
        nameValues.put("mimetype", "vnd.android.cursor.item/name");
        nameValues.put("raw_contact_id", contact_id);
        //向 raw_contact表中添加数据
        resovler.insert(datauri, nameValues);

        //向data表中添加phone数据
        ContentValues emailValues = new ContentValues();
        emailValues.put("data1", "[email protected]");
        emailValues.put("mimetype", "vnd.android.cursor.item/email_v2");
        emailValues.put("raw_contact_id", contact_id);
        //向 raw_contact表中添加数据
        resovler.insert(datauri, emailValues);

    }

}
时间: 2024-10-19 19:30:32

android 简单的读写联系人的相关文章

Android基于PinnedSectionListView实现联系人通讯录

 <Android基于PinnedSectionListView实现联系人通讯录> 我在之前的文章中写过文章,介绍过PinnedSectionListView(文章地址链接: http://blog.csdn.net/zhangphil/article/details/47144125 )[文1],也有一篇文章是关于Android通讯录联系人操作的基础知识(文章地址链接: http://blog.csdn.net/zhangphil/article/details/47250747 )[文

《Android开发卷——手机联系人T9搜索》

    自己研究了好几天联系人的T9搜索算法, 先分享出来给大家看看. 欢迎指教.如果有大神有更好的T9搜索算法, 那更好啊,大家一起研究研究,谢谢. 第一部分是比较简单的获取手机联系人. 获取联系人前提要有权限. <uses-permission android:name="android.permission.READ_CONTACTS" /> 因为手机的联系人都存储在数据库里面,所以我们只要把数据库里的信息查询出来即可. private static final St

基础总结篇之六:ContentProvider之读写联系人

靡不有初,鮮克有終.<詩經> 很多事情,绝大多数人都会在开始的时候满怀热情,而能坚持到底的却是寥寥无几.对待自己的目标,虎头蛇尾绝不可取,半途而废只会一无所成,我们必须持之以恒的做下去,坚持到底才能摘取胜利的果实.最近也忙了起来,忙着给自己充电,深知这项任务的艰巨,不是一天两天的事,所以也借用这句警言来告诫自己,坚持不懈的走下去. 今天我们来讲解一下如何利用ContentProvider机制读写联系人信息. 在Android中,ContentProvider是一种数据包装器,适合在不同进程间实

Android简单登录系统

很长时间没有写博客了,最近一直在写android for gis方面的项目.不过这篇博客就不写gis方面的了,今天刚刚做的一个简单的android登录系统.数据库是android自带的sqlite,sqlite的优势就不用我说了哈.下面进入正题. 1.数据库Help类 我们需要编写一个数据库辅助类来访问sqlite数据库.在数据库辅助类中,可以完成数据库的创建,表的增加.删除.修改.查询等操作. 1 public class DBHelper extends SQLiteOpenHelper {

[android] 获取系统的联系人信息

内容提供是实质上是个接口,后门,他给别人提供数据,系统联系人是个比较复杂的内容通过者. 找到/data/data/com.android.providers.contacts/contacts2.db 这个目录下还有个文件contacts2.db.-journal,这个文件和数据库的事务相关 联系人应用数据库的主要结构 raw_contacts 联系人表 contact_id 联系人id data数据表  raw_contact_id联系人id,mimetype_id数据类id,data1数据

android 简单文件操作

1.布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orient

Android简单登陆页面

布局: 线性布局+相对布局 日志打印: 利用LogCat和System.out.println打印观察. Onclick事件是采用过的第四种: 在配置文件中给Button添加点击时间 涉及知识: 通过上线文context获得文件的路径和缓存路径,保存文件 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

android内存文件读写

android内存文件读写:无需权限 public class MainActivity extends Activity implements OnClickListener { private Button fileSave; private Button fileRead; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContent

Android简单的分享笔记

http://blog.csdn.net/xyz_lmn/article/details/16856843 采用Intent隐式调用Activity的方法,主要使用Intent.ACTION_SEND和Intent.createChooser(); 调用Android系统的分享接口.系统会过滤手机上的具有分享应用的程序,让用户进行选择.如果没有使用Intent.createChooser()则会取系统默认的用户分享方式,只有未设置的情况下才会弹出让用户进行选择. 1.简单的分享文本 1 Inte