2015/11/21
内容Uri标准写法:
获取手机的联系人
Mainactivity
List<String> contacts = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*readContacts(); 放在哪里都一样*/
ListView contactsView = (ListView) this.findViewById(R.id.contact_view);
ArrayAdapter<String> contactsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contacts);
contactsView.setAdapter(contactsAdapter);
readContacts();//初始化数据
}
private void readContacts(){
Cursor cursor = null;
try {
cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contacts.add(name+"\n"+phone);
}
} catch (Exception e) {
// TODO: handle exception
}finally{
if(cursor!=null){
cursor.close();
}
}
}
读取手机联系人的权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
效果:
自定义自己的ContentProvider
1.新建一个DataContentProvider继承ContentProvider
2.声明一个静态对象 UriMatcher uriMatcher;
3**.重写6个方法**
{ oncreate() //用于实例数据库帮助类对象dbHelper,成功则返回true
query() //返回一个cursor
insert() //返回增加列的id
updata() //()返回更新的行
delete() //返回删除的行
getType()
}
例子
、、
、、
详细在《第一行代码》-285页
4.在AndroidManifest.xml注册provider
5.在另一个app