zoukankan      html  css  js  c++  java
  • android102 查询,插入联系人

    package com.itheima.getcontacts;
    
    import com.itheima.getcontacts.domain.Contact;
    
    import android.net.Uri;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.database.Cursor;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
        /*
        #联系人数据库
    
        * raw\_contacts表:
            * contact_id:联系人id
        * data表:联系人的具体信息,一个信息占一行
            * data1:信息的具体内容
            * raw\_contact_id:联系人id,描述信息属于哪个联系人
            * mimetype_id:描述信息是属于什么类型
        * mimetypes表:通过mimetype_id到该表查看具体类型
        
        */
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        //查询联系人
        public void click(View v){
            //通过内容提供者访问联系人数据库
            ContentResolver cr = getContentResolver();
            //先查询raw\_contacts表拿到联系人id,com.android.contacts是联系人的内容提供者主机名,new String[]{"contact_id"}是查询的字段id,
            Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null, null, null);
            while(cursorContactId.moveToNext()){
                //获取联系人id
                String contactId = cursorContactId.getString(0);
                //* 然后拿着联系人id去data表查询属于该联系人的信息,new String[]{"data1", "mimetype"}是查询的字段,new String[]{contactId}是查询条件
                Cursor cursorData =  cr.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1", "mimetype"}, 
                        "raw_contact_id = ?", new String[]{contactId}, null);
                //获取所有字段的名字
                String[] names = cursorData.getColumnNames();
                for (String string : names) {
                    System.out.println(string);
                }
                Contact con = new Contact();//Contact自定义的联系人javabean
                //* 得到data1字段的值,就是联系人的信息,通过mimetype判断是什么类型的信息
                while(cursorData.moveToNext()){
                    String data1 = cursorData.getString(0);
                    String mimetype = cursorData.getString(1);
                    //通过mimetype的判断,把data1存入对应的属性
                    if("vnd.android.cursor.item/email_v2".equals(mimetype)){
                        con.setEmail(data1);
                    }
                    else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
                        con.setPhone(data1);
                    }
                    else if("vnd.android.cursor.item/name".equals(mimetype)){
                        con.setName(data1);
                    }
                }
                System.out.println(con.toString());
            }
        }
        
    }
    //<uses-permission android:name="android.permission.READ_CONTACTS"/>
    package com.itheima.insertcontact;
    
    import android.net.Uri;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        //插入联系人
        public void click(View v){
            ContentResolver cr = getContentResolver();
            //先查询raw_contacts表,获取最新联系人的主键,然后主键+1,就是要插入的联系人的id
            Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"_id"}, null, null, null);
            //默认联系人id就是1
            int contact_id = 1;
            if(cursorContactId.moveToLast()){
                //拿到主键
                int _id = cursorContactId.getInt(0);
                //主键+1,就是要插入的联系人id
                contact_id = ++_id;
            }
            
            ContentValues values = new ContentValues();
            values.put("contact_id", contact_id);
            //把联系人id插入raw_contacts数据库
            cr.insert(Uri.parse("content://com.android.contacts/raw_contacts"), values);
            
            values.clear();
            values.put("data1", "二bi");
            values.put("mimetype", "vnd.android.cursor.item/name");
            values.put("raw_contact_id", contact_id);
            cr.insert(Uri.parse("content://com.android.contacts/data"), values);
            
            values.clear();
            values.put("data1", "1344567");
            values.put("mimetype", "vnd.android.cursor.item/phone_v2");
            values.put("raw_contact_id", contact_id);
            cr.insert(Uri.parse("content://com.android.contacts/data"), values);
        }
        
    }
    //<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    //<uses-permission android:name="android.permission.READ_CONTACTS"/>
  • 相关阅读:
    UVA10090 数论基础 exgcd
    UVA 10037 贪心算法
    ST表入门学习poj3264 hdu5443 hdu5289 codeforces round #361 div2D
    poj3254状压DP入门
    I.点进来吧,这里有你想要的(01背包)
    J.哭泣的阿木木(线段树模板题)
    可怜的ljb(树状数组,逆序对)
    D武器大师的宝贝(最大相交区间,异或,最大公约数)
    银行排队模拟(队列,模拟,数据结构)
    B
  • 原文地址:https://www.cnblogs.com/yaowen/p/4972885.html
Copyright © 2011-2022 走看看