求详细解释这段代码
//对分配是否可以阅读联系人的权限的设置。
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();
}
}
}