Android获取直接拨打电话运行时权限

自从Android6.0后,谷歌增加了许多权限验证,以前只需要权限声明的功能再现在要实现就需要在你执行功能时实时获取权限,即运行时权限runtime permission,下面是我用在程序中获取直接拨打电话的权限的代码,来自网友,亲测好用。

Android获取直接拨打电话运行时权限

Android获取直接拨打电话运行时权限

实现代码如下:

/** * 申请权限 */private void requestPermission(){    //判断Android版本是否大于23    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)    {        int checkCallPhonePermission = ContextCompat.checkSelfPermission(SearchActivity.this, Manifest.permission.CALL_PHONE);        if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED)        {            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE},                    RequestPermissionType.REQUEST_CODE_ASK_CALL_PHONE);            return;        }        else        {            callPhone(phone);        }    }    else    {        callPhone(phone);    }}/** * 注册权限申请回调 * @param requestCode 申请码 * @param permissions 申请的权限 * @param grantResults 结果 */@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){    switch (requestCode)    {        case  RequestPermissionType.REQUEST_CODE_ASK_CALL_PHONE:            if (grantResults[0] == PackageManager.PERMISSION_GRANTED)            {                callPhone(phone);            }            else            {                // Permission Denied                Toast.makeText(SearchActivity.this, "CALL_PHONE Denied", Toast.LENGTH_SHORT).show();            }            break;        default:            super.onRequestPermissionsResult(requestCode, permissions, grantResults);    }}/** * 拨号方法 */private void callPhone(String phone){    Intent intent = new Intent();    intent.setAction(Intent.ACTION_CALL);    intent.setData(Uri.parse("tel:"+phone));    startActivity(intent);}

在需要获取权限时执行requestPermission();申请权限即可,代码会自动判断是否已经获得授权。

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/242184.html

(0)
上一篇 2022年4月7日 17:09
下一篇 2022年4月7日 17:13

相关推荐

发表回复

登录后才能评论