正确的书写方式,以拨打电话为例:
首先在Manifest.xml中声明权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
然后要在代码中判断有没有权限。
private void callPhone() {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
} else {
call();
}
}
private void call() {//有权限,拨打电话
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:10086"));
startActivity(callIntent);
} catch (SecurityException e) {
e.printStackTrace();
}
}
@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) {//用户同意给权限
call();
} else {//拒绝给权限
Toast.makeText(this, "没有获取权限", Toast.LENGTH_SHORT).show();
}
break;
}
}