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"/>
时间: 2024-11-19 00:17:51

android102 查询,插入联系人的相关文章

内容提供者(获取联系人信息和插入联系人)

一丶获取联系人的信息 点击获取联系人信息 public void click(View view){        //获取内容解析器        ContentResolver resolver = getContentResolver() ;        //设定访问的uri(系统本机)        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts") ;//联系人的id        Uri d

插入联系人

插入联系人的步骤 [1]先往row_contacts表插入数据   contact_id [2]在往data表里面插入数据  data1 //点击按钮 插入一条联系人信息 public void click(View v) { Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/da

查询所有联系人并选中显示 contentprovider

<!-- 读取联系人记录的权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/> activity_main<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

安卓+servlet+MySql 查询+插入(汉字乱码解决)

问题: 安卓程序,通过servlet连接MySQL数据库,并实现查询和插入(修改,删除类似). 其中遇到的最大的问题是:汉字乱码问题(查询条件有汉字乱码.servlet的汉字到数据乱码.安卓通过servlet方法数据库汉字乱码) 当所有的编码(客户端,服务端,数据库)都为UTF-8时,但是插入汉字依然为乱码. 1.安卓客户端中的汉字到servlet中为乱码. 当插入到数据库的汉字为乱码(而不是问号)时. 解决方法: 在安卓客户端将String中的汉字由UTF-8转码为ISO8859-1. use

JDBC查询插入操作

好久没写过JDBC,也有些记不清了,在此重新梳理一下 比如操作表test_message CREATE TABLE `test_message` ( `message_id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `content` varchar(100) DEFAULT NULL ) 查询 import java.sql.*; public class Main { public static void main(Stri

转: Hibernate HQL查询 插入 更新(update)实例

1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hql).list();上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回.这里需要注意的是,Hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的Employee实体对象,它有两个子类分别是 Hour

Hibernate HQL查询 插入 更新(update)实例

1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hql).list();上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回.这里需要注意的是,Hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的Employee实体对象,它有两个子类分别是 Hour

SQL SERVER 数据库跨服务器查询插入数据

SQLserver的分布式查询:如果一个项目需要二至多台服务器,而我们又必须从几台服务器中将数据取出来,这就必须用分布式查询!在这里有两个概念:本地数据源.远程数据源!本地数据源指的是单个服务器上的数据而远程数据源指的是另一个SQL实例上的数据.如何跨服务器取数呢?一.如果经常访问或数据量大,建议用链接服务器--创建链接服务器exec sp_addlinkedserver ''srv_lnk'','''',''SQLOLEDB'',''远程服务器名或ip地址''exec sp_addlinked

【Android】利用AutoCompleteTextView控件联系人自动补全与根据联系人姓名查询电话

自动补全功能是app比较友好的功能之一,但利用AutoCompleteTextView自动补全文本框控件完成起来并不简单,因为其中涉及到AutoCompleteTextView填充数据的适配器,与AutoCompleteTextView的监听器.同时还需要利用ContentResolver去查找设备的通讯录,当然,这与<[Android]利用安卓的数据接口.多媒体处理编写内存卡Mp3播放器app>(点击打开链接)中遍历MP3与<[Android]Sqlite数据库增删改查>(点击打