//对分配是否可以阅读联系人的权限的设置。
if(ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]
{Manifest.permission.READ_CONTACTS},1
);
}else{
ReadContact();
}
}
public void ReadContact(){
Cursor cursor=null;
try {
cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI
,null,null,null,null);
if(cursor!=null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.
getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.
getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contact contact=new Contact(name,number);
list.add(contact);
}
myAdapter.notifyDataSetChanged();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(cursor!=null){
cursor.close();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if(grantResults.length>0&&grantResults[0]==PackageManager.
PERMISSION_GRANTED){
ReadContact();
}else{
Toast.makeText(MainActivity.this,"没有分配足够的权限",
Toast.LENGTH_LONG).show();
}
}
}
if(ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]
{Manifest.permission.READ_CONTACTS},1
);
}else{
ReadContact();
}
}
public void ReadContact(){
Cursor cursor=null;
try {
cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI
,null,null,null,null);
if(cursor!=null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.
getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.
getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contact contact=new Contact(name,number);
list.add(contact);
}
myAdapter.notifyDataSetChanged();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(cursor!=null){
cursor.close();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if(grantResults.length>0&&grantResults[0]==PackageManager.
PERMISSION_GRANTED){
ReadContact();
}else{
Toast.makeText(MainActivity.this,"没有分配足够的权限",
Toast.LENGTH_LONG).show();
}
}
}
解决方案 »
- android中System.out.println()的极其诡异异常!请高人解释一下
- android关于百度地图中 驾车路线获取途径路段相关信息
- android自定义View的显示问题。。在线等
- 多表联合查询能实现么?
- android Gallery 的 getView方法不执行
- 新建AVD只有一个版本可选,4.3版本,有朋友遇到过这个问题吗?
- 这样形式的json怎么解析?
- setBackgroundColor将canon.draw画点、线覆盖了
- 求教java网络开发问题
- android 能否实现数据的叠加。
- Library projects 不支持Annotation 怎么修改
- Android studio3如何修改默认的gradle版本
Manifest.permission.READ_CONTACTS:读取手机联系人权限
PackageManager.PERMISSION_GRANTED:权限允许。对应还有PERMISSION_DENIED,权限拒绝。
ActivityCompat.requestPermissions:请求权限,可以请求一个或多个权限。
第一句就是判断是否有读取联系人权限,如果没有就去请求。有权限直接读取。ReadContact就是读取联系人列表然后显示处理。
onRequestPermissionsResult:权限请求结果。请求权限后会弹窗提醒用户是否授予权限,用户点击后会触发当前方法。