用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>


运行结果

更多相关文章

  1. JavaWeb + mySQL + Android(安卓)实现Android简单的注册登录
  2. Android(安卓)如何对sqlite数据库进行增删改[insert、update和de
  3. 转:android笔记之contacts(通讯录)数据库
  4. Android数据存储之:SQLite数据库存储
  5. Android本地代码直接访问远程数据库(Rxjava方式)
  6. ormlite数据库存放sd卡,android卸载应用保留数据的方法
  7. Android(安卓)数据库 大量插入 事务开启
  8. Android短信彩信开发手记(一):数据库相关
  9. Android(安卓)Market 分析【安智市场】

随机推荐

  1. Android相机开发那些坑
  2. Android(安卓)jetpack Room数据库(一)基本
  3. 一个android访问http资源的便捷工具类―
  4. Android(安卓)JNI入门第一篇――HelloWor
  5. Android(安卓)访问网络连接设置界面
  6. android 使内容铺满全屏
  7. Android(安卓)studio图片ERROR: 9-patch
  8. android沉浸式状态栏实现,android沉浸式状
  9. Socket编程java[简单易懂],附带Android(
  10. gradle clean报错Could not find manifes