Android app获取权限如定位拨打电话等

例如拨打电话
![在这里插入图片描述](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;

        }
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_43117800/article/details/107529563
今日推荐