美文网首页其它赏味不足Android开发
一个简单的例子来处理Android6.0权限机制

一个简单的例子来处理Android6.0权限机制

作者: AxeChen | 来源:发表于2017-03-01 20:10 被阅读334次

    Android6.0 添加了权限的机制,需要用户给予一些危险的权限。比如:访问SD卡,拨打电话等。我们怎样对权限进行处理呢?

    权限机制的处理的逻辑

    对于Android的权限处理,有三个核心的方法:
    1、ContextCompat.checkSelfPermission:用于检测是否拥有权限。
    2、ActivityCompat.requestPermissions:请求该权限。
    3、onRequestPermissionsResult:获取权限请求的回调。

    一段打电话的代码来展示主要的逻辑:

    public class CallPermissionActivity extends AppCompatActivity {
    
        public final static int PERMISSION_CALL = 1;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.call);
        }
    
        public void call(View view){
            call();
        }
    
        private void call(){
            //1、判断是否有打电话的权限
            if(ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
                //没有获取权限则做权限处理
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},PERMISSION_CALL);
            } else {
                //已经获取了权限,则执行打电话操作
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+100010));
                startActivity(intent);
            }
        }
    
        //权限请求回调
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            switch (requestCode){
                case PERMISSION_CALL:
                    if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                        call();
                    }else{
                        //用户没有授予权限,
                    }
                    break;
            }
        }
    }
    
    效果图

    代码的逻辑比较简单,先checkSelfPermission检查是否授权,如果没有授权则请求权限requestPermissions,然后将请求权限结构回调在onRequestPermissionsResult中。

    推荐博客:
    http://blog.csdn.net/yanzhenjie1003/article/details/52503533/

    相关文章

      网友评论

        本文标题:一个简单的例子来处理Android6.0权限机制

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