今天在这里对Android手机权限问题给出了一个小示例,如果读者看了以后觉得内容存在什么问题,请提出您宝贵的建议和意见。
以下就是Android获取手机权限的方法,这里使用的例子是使用的”android.permission.READ_CONTACTS“权限。
第1步:添加权限
<!--1.在Manifest文件中添加权限--> <uses-permission android:name="android.permission.READ_CONTACTS"/>
第2步:查看权限状态
//2.检查所需权限的授权状态
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS);
//3.判断所需权限是否已授权
if (permissionCheck != PackageManager.PERMISSION_GRANTED){
//4.若所需权限未授权,请求授权
ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.READ_CONTACTS},REQUEST_READ_CONTACTS);
}else {
//读取联系人的方法
readContacts();
}
第3步:根据授权结果,执行相应的操作
//5.授权结果,通过ActivityCompat.onRequsetPermissionsResult回调授权结果,判断是否授权
@Override
public void onRequestPermissionsResult(intrequestCode,@NonNullString[] permissions,@NonNullint[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case REQUEST_READ_CONTACTS:
if ((grantResults.length>0) && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//读取联系人的方法
readContacts();
}
break;
default:
break;
}
}
备注:
1:以上内容中使用的方法
//读取联系人的方法
private void readContacts() {
//读取联系人
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
SimpleCursorAdapter testAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,newString[
{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER},
new int[]{R.id.list_name,R.id.list_phone});
mListv = (ListView) findViewById(R.id.mlistv);
mListv.setAdapter(testAdapter);
}
2:ActivityCompat.requestPermissions方法在被调用后,系统会弹出一个权限申请框,这个选择框无法更改: 如下图所示:
此时,activity会调用onPause()方法,用户做了选择之后,对话框消失,onResume()方法又执行。