今天在做demo的时候发现在清单文件里面给了这个权限,但是在6.0的模拟器上面一运行就报错误
error: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxx cmp=com.android.server.telecom/.components.UserCallActivity } from ProcessRecord{cbbd7c1 5228:com.dialerTest.DialerApp/u0a96} (pid=5228, uid=10096) with revoked permission android.permission.CALL_PHONE
后来找到了这个链接 https://developer.android.com/training/permissions/requesting.html,看了一下,原来6.0有了动态权限,就是你在哪个页面需要这个权限只需要直接去请求就行了,而且还有了相应的监听的方法供你来判断。
//动态的请求权限
ActivityCompat.requestPermissions(XUtils3TestActivity.this, new String[]{
Manifest.permission.CALL_PHONE
}, 0x11);
Handle the permissions request response:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 0x11) {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i("CMCC", "权限被允许");
} else {
Log.i("CMCC", "权限被拒绝");
}
}
}
运行结果:
05-05 22:10:03.905 27069-27069/com.example.wulsh.myapplication I/CMCC: 权限被允许