求详细解释这段代码

3w点come 2018-12-02 09:20:48
//对分配是否可以阅读联系人的权限的设置。
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();
}
}
}
...全文
97 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklwan 2018-12-03
  • 打赏
  • 举报
回复
ContextCompat.checkSelfPermission:判断是否有某个权限,android6.0之后都要动态请求权限。 Manifest.permission.READ_CONTACTS:读取手机联系人权限 PackageManager.PERMISSION_GRANTED:权限允许。对应还有PERMISSION_DENIED,权限拒绝。 ActivityCompat.requestPermissions:请求权限,可以请求一个或多个权限。 第一句就是判断是否有读取联系人权限,如果没有就去请求。有权限直接读取。ReadContact就是读取联系人列表然后显示处理。 onRequestPermissionsResult:权限请求结果。请求权限后会弹窗提醒用户是否授予权限,用户点击后会触发当前方法。

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧