Skip to content

Instantly share code, notes, and snippets.

@dearsq
Last active August 17, 2018 09:28
Show Gist options
  • Save dearsq/458172bc6be16582d15da87160c2f1d1 to your computer and use it in GitHub Desktop.
Save dearsq/458172bc6be16582d15da87160c2f1d1 to your computer and use it in GitHub Desktop.
[SOP_动态权限] #Android

在程序运行的过程中由用户去授权执行某些可能是危险的的操作.

实现步骤

  1. 检查权限 ContextCompat.checkSelfPermission 参数 1 Context 参数 2 具体的权限名字
ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE)

判断有无权限:
ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) 
 		!= PackageManager.PERMISSION_GRANTED
  1. 申请权限 ActivityCompat.requestPermissions 参数 1 Context 参数 2 权限名 参数 3 自定义权限码
ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission.CALL_PHONE }, 1)

之后系统会弹出权限申请对话框, 再调用 onRequestPermissionResult . 授权结果会封装在 grantResults 参数中

  1. 回调 onRequestPermissionResult
    public void onRequestPermissionsResult ( int requestCode, String[] permissions , int[] grantResults) {
        switch (requestCode) {
            case 1:
                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    call();
                } else {
                    Toast.makeText(this, "You denied the permission" , Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment