美文网首页
android 6.0动态权限

android 6.0动态权限

作者: CQ_TYL | 来源:发表于2019-01-01 15:09 被阅读0次
  • ContextCompact.checkSelfPermission 检查是否已有某个权限
  • ActivityCompat.requestPermissions() 权限请求
  • onRequestPermissionResult() 权限请求后的回调
  • ActivityCompat.shouldShowRequestPermissionRationale 可以给用户展示的一个权限请求来的作用,在权限被用户拒绝的情况才会出现
危险权限:
  • CALENDAR
  • CAMERA
  • CONTACTS
  • LOCATION
  • MICROPHONE
  • PHONE
  • SENSORS
  • SMS
  • STORAGE
详情:
详情
简单的权限请求demo

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.bn_main).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                callPhone();//模拟打电话
            }
        });
    }
    private void callPhone(){
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
            //权限请求未被同意
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
        }else {
            //权限请求被同意
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode){
            case 1://请求的权限码
                if (grantResults[0]==PackageManager.PERMISSION_GRANTED){
                //权限被同意
                }else {
                //权限被拒绝 提示用戶沒有權限

                }
                break;
        }
    }
}
封装:
    /**
     * 檢查是否由權限
     * */
    private Boolean hasPermission(String ... permissions){
        for(String permission:permissions){
            if (ContextCompat.checkSelfPermission(this,permission)!= PackageManager.PERMISSION_GRANTED){
                return false;
            }
        }
        return true;
        }
        /**
         * 權限請求
         * */
        private void requestPermissions(int code,String ... permissions){
                ActivityCompat.requestPermissions(this,permissions,code);
        }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        switch (requestCode){
            case Constants.CALL_CODE:

                break;
        }
    }

相关文章

网友评论

      本文标题:android 6.0动态权限

      本文链接:https://www.haomeiwen.com/subject/wfenlqtx.html