Android动态申请权限(拨打电话) | 您所在的位置:网站首页 › 为什么无权拨打该电话 › Android动态申请权限(拨打电话) |
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 实验室设备网 版权所有 |