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"/>
android102 查询,插入联系人的更多相关文章
- getContentResolver()内容解析者查询联系人、插入联系人
首先,我们需要知道的两个Uri: 1.Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");//查到 ...
- 查询所有联系人并选中显示 contentprovider
<!-- 读取联系人记录的权限 --> <uses-permission android:name="android.permission.READ_CONTACTS&qu ...
- 安卓+servlet+MySql 查询+插入(汉字乱码解决)
问题: 安卓程序,通过servlet连接MySQL数据库,并实现查询和插入(修改,删除类似). 其中遇到的最大的问题是:汉字乱码问题(查询条件有汉字乱码.servlet的汉字到数据乱码.安卓通过ser ...
- Android向手机通讯录中的所有的联系人(包括SIM卡),向手机通讯录中插入联系人
package com.example.myapi.phonepersion; import java.util.ArrayList; import java.util.List; import an ...
- SQL 变量 条件查询 插入数据
(本文只是总结网络上的教程) 在操作数据库时 SQL语句中难免会用到变量 比如 在條件值已知的情況下 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值 ...
- springmvc+mybatis+redis实现查询插入操作
最近在学习redis,虽然现在还不是很熟练.不过可以进行简单的框架整合开发. IDE:我使用的是IDEA.springmvc+spring+mybatis的整合这个我就不多说了,下面我们先进行这块的整 ...
- 我的一个PLSQL【我】 循环嵌套、游标使用、变量定义、查询插入表、批量提交事务、字符串截取、动态sql拼接执行
代码块: --CREATE OR REPLACE PROCEDURE PRO_REVENUE_STATISTICS --IS DECLARE --计数器 ins_counter PLS_INTEGER ...
- swoole组件----mysql查询,插入数据
注意!任何swoole函数都应该包含在go(function(){}) 经典查询方法query() go(function (){ $swoole_mysql = new Swoole\Corouti ...
- Go_MySQL查询插入删除
什么是预处理? 普通SQL语句执行过程: 客户端对SQL语句进行占位符替换得到完整的SQL语句. 客户端发送完整SQL语句到MySQL服务端 MySQL服务端执行完整的SQL语句并将结果返回给客户端. ...
随机推荐
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-008-SpEL介绍
一. 1.SpEL expressions are framed with #{ ... } 2.SpEl的作用 Sp EL has a lot of tricks up its sleeves, ...
- ANDROID_MARS学习笔记_S01原始版_009_SQLite
一.代码1.xml(1)activity_main.xml <?xml version="1.0" encoding="utf-8"?> <L ...
- 【HDOJ】1076 An Easy Task
水题,如题. #include <stdio.h> #define chk(Y) (Y%4==0 && Y%100!=0) || Y%400==0 int main() { ...
- Configurataion Printer(基于全新2.2.0API)
Configurataion Printer import java.util.Map.Entry; import org.apache.hadoop.conf.Configuration; impo ...
- iPhone手机录像步骤
1 Open QuickTime Player on Mac 2 top menu-- New Movie Recording 3 in Movie Recording UI, click the t ...
- jQuery里面的datepicker日期控件默认是显示英文的,如何显示中文或其他语言呢?
jQuery里面的datepicker日期控件默认是显示英文的,如何让他显示中文或其他呢? [官方的写法]: (1)引入JS文件: <script type="text/javascr ...
- MFC UpdateData自动更新
嗯,添加一个按钮和我们自己定义的成员变量 关联. 方法1. 在*.rc 或者class 类视图中点击[add variable],就会自动生成DDX_Text(*,*)的内容及其IF 方法2. 自己 ...
- ruby编程语言-学习笔记4(第4章 表达式和操作符)
4.6.9 范围 Flip-Flops: ..和... ..和... 操作符不是基于方法的,无法重定义.(优先级比较低) x+1 .. x*x #可以认为是x+1 至 x*x 的范围 因为操作 ...
- [转]优化数据库大幅度提高Oracle的性能
几个简单的步骤大幅提高Oracle性能--我优化数据库的三板斧. 数据库优化的讨论可以说是一个永恒的主题.资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据 ...
- [转]ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继承自FilterAttribute类同时实现IAction ...