例如拨打电话
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200723094920581.png
1:清单文件中加入对应权限
<uses-permission android:name="android.permission.CALL_PHONE" />
2:点击按钮或者进入页面进行权限请求
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
private static final int MY_PERMISSIONS_REQUEST_CALL_PHONE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestcallphone();
}
private void requestcallphone() {
//检查是否获得权限
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
//没有获得授权,申请授权
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.CALL_PHONE)) {
//弹窗解释为何需要该权限,再次请求权限
Toast.makeText(MainActivity.this, "请授权!", Toast.LENGTH_LONG).show();
//跳转到应用设置界面
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
} else {
//不需要解释为何需要授权直接请求授权
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE);
}
} else {
//获得授权,拨打电话
CallPhone();
}
}
private void CallPhone() {
//激活拨号组件/intent表示想干什么事
Intent intent = new Intent();//意图对象:动作+号码
intent.setAction(Intent.ACTION_CALL);//执行打电话的动作
Uri data = Uri.parse("tel:" + "12345");//打电话的号码
intent.setData(data);
//开始一个新的动作
startActivity(intent); //激活acitivity组件
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_CALL_PHONE: //申请电话权限
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//授权成功,继续拨打电话
CallPhone();
Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_LONG).show();
} else {
//授权失败
Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_LONG).show();
}
break;
}
}
}