Android 电话查询(扩展成通讯录)
来源:互联网 发布:同花顺配资软件 编辑:程序博客网 时间:2024/06/12 01:35
用FIle Explore 我们可以清楚的看见data-->data目录下的通讯录的数据库的所有信息
导出这个数据库我们就可以看所有通讯录的信息
import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract.CommonDataKinds.Phone;import android.provider.ContactsContract.Contacts.Photo;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.Spinner;import android.widget.Toast;public class ContentProvide_TestActivity extends Activity { private Spinner spinner; private EditText editText; private Button button; private ListView listView; List<String> list;ArrayAdapter<String> adapter; private static final String[] ContactInfo=new String[]{Phone.DISPLAY_NAME,Phone.NUMBER,Photo._ID,Phone.TIMES_CONTACTED,Phone.LAST_TIME_CONTACTED}; @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main); spinner=(Spinner) findViewById(R.id.spinner1); editText=(EditText) findViewById(R.id.editText1); button=(Button) findViewById(R.id.insert); listView=(ListView) findViewById(R.id.listView1); list=new ArrayList<String>(); adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item);adapter.add("姓名");//Position=0adapter.add("手机号码");//Position=1adapter.add("通话次数");//Position=2spinner.setAdapter(adapter);button.setOnClickListener(new ButtonLIstener()); } class ButtonLIstener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stub // listView.removeAllViewsInLayout(); list.clear(); ArrayAdapter<String> adapter3=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); listView.setAdapter(adapter3); Log.i("URL---->", Phone.CONTENT_URI+" ");//content:// com.android.contacts/data/phones ContentResolver contentResolver=ContentProvide_TestActivity.this.getContentResolver(); int Selete=spinner.getSelectedItemPosition(); String editString=editText.getText().toString(); if (editString.isEmpty()) {Toast.makeText(getApplicationContext(), "请输入要查询的内容", Toast.LENGTH_LONG).show();return ;} String selection=null; switch (Selete) {case 0:selection="DISPLAY_NAME=?";Log.i("------>", selection+editString);break; case 1: //selection="NUMBER=?"; 报错这一行,那是因为我们查询的表是contacts表 和 raw_contacts表 以及 data表,这三个表没有NUMBER这个字段, selection="DATA1=?";//手机号码是存放在数据库 data表中的data1中,data4中也有, Log.i("------>", selection+editString); break; case 2: selection="TIMES_CONTACTED=?"; break; default:break;} Cursor cursor=contentResolver.query(Phone.CONTENT_URI, ContactInfo, selection, new String []{editString}, null); System.out.println("-------------"+cursor==null); if (cursor!=null) { if (cursor.moveToNext()==false) { Toast.makeText(getApplicationContext(), "没有查询到你想要的数据", Toast.LENGTH_LONG).show();}while(cursor.moveToNext()){String PhoneName=cursor.getString(0);Log.i("名字--------->",PhoneName );list.add("姓 名:"+PhoneName);String PhoneNumber=cursor.getString(1);Log.i("电话号码------>", PhoneNumber);list.add("电话号码:"+PhoneNumber);String ContantS=cursor.getString(3);Log.i("通话次数----->", ContantS);list.add("通话次数:"+ContantS);String LastContants=cursor.getString(3);Log.i("最后通话----->", LastContants);list.add("最后通话:"+LastContants);} ArrayAdapter<String> adapter2=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); listView.setAdapter(adapter2);} /* else if(cursor==null){}*/} }}
布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" 请选择查询方式"></TextView><Spinner android:layout_height="wrap_content" android:id="@+id/spinner1" android:layout_width="match_parent"></Spinner><EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText1"></EditText><Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询" android:id="@+id/insert"></Button><ListView android:id="@+id/listView1" android:layout_height="wrap_content" android:layout_width="match_parent"></ListView></LinearLayout>
最后记得加一个权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
运行结果
- Android 电话查询(扩展成通讯录)
- android 中电话记录,通讯录与短信的查询
- android获取通讯录所有电话
- android 简易通讯录查询
- android 快速查询通讯录
- Android通讯录分页查询
- android通讯录:拨打电话和发短信
- android 获取短信 通讯录 电话记录
- Android 通讯录添加联系人 自定义电话类型
- android - 跳转拨打电话、通讯录、直接拨打电话
- Android 拨打电话、查询联系人
- Android实战--实现读取通讯录和拨打电话功能
- Android掉系统通讯录并返回姓名电话
- iOS 通讯录拨打电话
- 读取通讯录人员电话
- Android通讯录查询篇--ContactsContract.Data开篇
- Android通讯录查询篇--ContactsContract.Data 二
- Android通讯录查询篇--ContactsContract.Data开篇
- hdu4034floyd加深理解
- 整理下思路(5)
- 第三篇
- C# http 断点续传
- hdu 4027 Can you answer these queries? The 36th ACM/ICPC Asia Regional Shanghai Site
- Android 电话查询(扩展成通讯录)
- 简单工厂,工厂方法和抽象工厂的区别
- 打方向盘示意图
- 第四篇
- 第五
- C 语言 全局变量多处定义 (强符号与弱符号)
- catalina.out日志过大 解决办法
- java按对象属性排序
- Ollydbg