您的位置:首页 > 移动开发 > Android开发

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

2011-09-14 20:04 211 查看
用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};

@Override
public 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=0
adapter.add("手机号码");//Position=1
adapter.add("通话次数");//Position=2
spinner.setAdapter(adapter);
button.setOnClickListener(new ButtonLIstener());

}
class ButtonLIstener implements OnClickListener{

@Override
public 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>


运行结果





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: