内容提供器ContentProvider 可以在不同的应用程序之间实现数据共享。
内容提供器的用法有两种
1使用现有的内容提供器来读取和操作相应程序中的数据,
2 创建自己的内容提供器给我们程序的数据提供外部访问接口
今天使用的是第一种方式读取手机联系人
1 新建项目contactTest,按照Eclipse自动生成文件。
2. 修改界面 Activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/contacts_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
3. MainActivity.java
package com.example.contacttest;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView contactsView; //ui
ArrayAdapter<String> adapter; //适配器
List<String> contactsList = new ArrayList<String>(); //读出的List
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//添加ui
contactsView = (ListView)findViewById(R.id.contacts_view);
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
contactsList);
contactsView.setAdapter(adapter);
readContacts(); //读取数据的方法
}
private void readContacts(){
Cursor cursor = null;
//
try{
cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, null, null, null);
while(cursor.moveToNext()){
//联系人
String displayName = cursor.getString(cursor.
getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//电话号码
String number = cursor.getString(cursor.
getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactsList.add(displayName+"\n"+number);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(cursor != null){
cursor.close();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
3.运行后的效果如图上
参考数目 第一行代码-Android