在AndroidManifest.xml中加入
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
定义REQUEST_CODE
private static final int REQUEST_CODE=0;
申请权限
//判断api版本,android6.0以上的需要动态申请权限
if(Build.VERSION.SDK_INT>=23)
{
int checkCALL_LOGPermission= ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_CALL_LOG)|ActivityCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_CALL_LOG);
if(checkCALL_LOGPermission!= PackageManager.PERMISSION_GRANTED){
//用以申请权限的方法,此时使用ActivityCompat类的该方法,以便于版本兼容
ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.READ_CALL_LOG,android.Manifest.permission.WRITE_CALL_LOG},REQUEST_CODE);
}else
{
//如果已经获取了相关权限
}
}else{
//如果api版本低于23
}
覆写onRequestPermissionsResult函数
//申请权限做出响应后的回调函数
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode)
{
case REQUEST_CODE:
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Toast.makeText(this,"获取权限成功",Toast.LENGTH_SHORT).show();
//获取权限成功
}else{
Toast.makeText(this,"获取权限失败",Toast.LENGTH_SHORT).show();
//获取权限失败,退出Activity
this.finish();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}