Android动态申请权限(拨打电话) 您所在的位置:网站首页 为什么无权拨打该电话 Android动态申请权限(拨打电话)

Android动态申请权限(拨打电话)

2024-06-17 01:48| 来源: 网络整理| 查看: 265

Android权限大全: https://www.cnblogs.com/diyishijian/p/5629545.html

        Android权限有上百个,那么我们如何在调用权限的时候,判断app是否被授予某项权限呢,所以这时候就需要动态去获取权限了,如果该权限已被赋予,就能直接使用该功能,否则就需要去申请权限。

        这里只需要三个方法,就可以搞定以上的问题,我这里将方法写在BaseActivity中,需要的时候调用就可以了。

BaseActivity中的代码 public static final int REQUEST_CALL_PERMISSION = 10111; //拨号请求码 /** * 判断是否有某项权限 * @param string_permission 权限 * @param request_code 请求码 * @return */ public boolean checkReadPermission(String string_permission,int request_code) { boolean flag = false; if (ContextCompat.checkSelfPermission(this, string_permission) == PackageManager.PERMISSION_GRANTED) {//已有权限 flag = true; } else {//申请权限 ActivityCompat.requestPermissions(this, new String[]{string_permission}, request_code); } return flag; } /** * 检查权限后的回调 * @param requestCode 请求码 * @param permissions 权限 * @param grantResults 结果 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case REQUEST_CALL_PERMISSION: //拨打电话 if (permissions.length != 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {//失败 Toast.makeText(this,"请允许拨号权限后再试",Toast.LENGTH_SHORT).show(); } else {//成功 call("tel:"+"10086"); } break; } } /** * 拨打电话(直接拨打) * @param telPhone 电话 */ public void call(String telPhone){ if(checkReadPermission(Manifest.permission.CALL_PHONE,REQUEST_CALL_PERMISSION)){ Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse(telPhone)); startActivity(intent); } } 子类Activity中的代码

在需要的地方直接调用call()方法:

call("tel:"+phone);

AndroidManifest中添加权限

权限是必不可少,不要忘记在项目清单文件中添加权限。

结果:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有