Android 电话查询(扩展成通讯录)


用FIle Explore 我们可以清楚的看见data-->data目录下的通讯录的数据库的所有信息

导出这个数据库我们就可以看所有通讯录的信息

 

 
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. import Android.app.Activity;  
  5. import android.content.ContentResolver;  
  6. import android.database.Cursor;  
  7. import android.os.Bundle;  
  8. import android.provider.ContactsContract.CommonDataKinds.Phone;  
  9. import android.provider.ContactsContract.Contacts.Photo;  
  10. import android.util.Log;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.widget.ArrayAdapter;  
  14. import android.widget.Button;  
  15. import android.widget.EditText;  
  16. import android.widget.ListView;  
  17. import android.widget.Spinner;  
  18. import android.widget.Toast;  
  19.   
  20. public class ContentProvide_TestActivity extends Activity {  
  21.      private Spinner spinner;  
  22.      private EditText editText;  
  23.      private Button button;  
  24.      private ListView listView;  
  25.      List<String> list;  
  26.         ArrayAdapter<String> adapter;  
  27.      private static final String[] ContactInfo=new String[]{Phone.DISPLAY_NAME,Phone.NUMBER,Photo._ID,Phone.TIMES_CONTACTED,Phone.LAST_TIME_CONTACTED};  
  28.        
  29.     @Override  
  30.     public void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.main);  
  33.         spinner=(Spinner) findViewById(R.id.spinner1);  
  34.         editText=(EditText) findViewById(R.id.editText1);  
  35.         button=(Button) findViewById(R.id.insert);  
  36.         listView=(ListView) findViewById(R.id.listView1);  
  37.          list=new ArrayList<String>();  
  38.         adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item);  
  39.         adapter.add("姓名");//Position=0   
  40.         adapter.add("手机号码");//Position=1   
  41.         adapter.add("通话次数");//Position=2   
  42.         spinner.setAdapter(adapter);  
  43.         button.setOnClickListener(new ButtonLIstener());  
  44.         
  45.     }  
  46.      class ButtonLIstener implements OnClickListener{  
  47.   
  48.         @Override  
  49.         public void onClick(View v) {  
  50.             // TODO Auto-generated method stub   
  51.         // listView.removeAllViewsInLayout();   
  52.         list.clear();  
  53.           
  54.         ArrayAdapter<String> adapter3=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list);  
  55.           listView.setAdapter(adapter3);  
  56.          Log.i("URL---->", Phone.CONTENT_URI+" ");//content:// com.android.contacts/data/phones   
  57.         ContentResolver contentResolver=ContentProvide_TestActivity.this.getContentResolver();  
  58.         int Selete=spinner.getSelectedItemPosition();  
  59.         String editString=editText.getText().toString();  
  60.         if (editString.isEmpty()) {  
  61.             Toast.makeText(getApplicationContext(), "请输入要查询的内容", Toast.LENGTH_LONG).show();  
  62.             return ;  
  63.         }  
  64.         String selection=null;  
  65.         switch (Selete) {  
  66.         case 0:  
  67.             selection="DISPLAY_NAME=?";  
  68.             Log.i("------>", selection+editString);  
  69.             break;  
  70.         case 1:  
  71.             //selection="NUMBER=?"; 报错这一行,那是因为我们查询的表是contacts表 和 raw_contacts表 以及 data表,这三个表没有NUMBER这个字段,   
  72.              selection="DATA1=?";//手机号码是存放在数据库 data表中的data1中,data4中也有,   
  73.             Log.i("------>", selection+editString);  
  74.             break;  
  75.         case 2:  
  76.             selection="TIMES_CONTACTED=?";  
  77.             break;  
  78.                   
  79.         default:  
  80.             break;  
  81.         }  
  82.       
  83.         Cursor cursor=contentResolver.query(Phone.CONTENT_URI, ContactInfo, selection, new String []{editString}, null);  
  84.         System.out.println("-------------"+cursor==null);  
  85.         if (cursor!=null) {  
  86.             if (cursor.moveToNext()==false) {  
  87.                 Toast.makeText(getApplicationContext(), "没有查询到你想要的数据", Toast.LENGTH_LONG).show();  
  88.             }  
  89.             while(cursor.moveToNext())  
  90.             {  
  91.                 String PhoneName=cursor.getString(0);  
  92.                 Log.i("名字--------->",PhoneName );  
  93.                 list.add("姓       名:"+PhoneName);  
  94.                 String PhoneNumber=cursor.getString(1);  
  95.                 Log.i("电话号码------>", PhoneNumber);  
  96.                 list.add("电话号码:"+PhoneNumber);  
  97.                 String ContantS=cursor.getString(3);  
  98.                 Log.i("通话次数----->", ContantS);  
  99.                 list.add("通话次数:"+ContantS);  
  100.                 String LastContants=cursor.getString(3);  
  101.                 Log.i("最后通话----->", LastContants);  
  102.                 list.add("最后通话:"+LastContants);  
  103.             }  
  104.               
  105.               ArrayAdapter<String> adapter2=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list);  
  106.                listView.setAdapter(adapter2);  
  107.         }  
  108.         /* 
  109.         else if(cursor==null){ 
  110.          
  111.         } 
  112.         */  
  113.         }  
  114.      }  
  115.       
  116. }  

布局文件

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="                          请选择查询方式"></TextView>  
  8. <Spinner android:layout_height="wrap_content" android:id="@+id/spinner1" android:layout_width="match_parent"></Spinner>  
  9. <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText1">  
  10. </EditText>  
  11. <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询" android:id="@+id/insert"></Button>  
  12. <ListView android:id="@+id/listView1" android:layout_height="wrap_content" android:layout_width="match_parent"></ListView>  
  13. </LinearLayout>  

最后记得加一个权限

  1. <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>  

运行结果

 

 

相关内容