Android 获取用户权限

首先需要在Manifast.xml文件中声明我想获取的权限:


<uses-permission android:name="android.permission.INTERNET"/>
<!--WIFI可以不加-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>



然后,在程序中,询问用户,可以打开权限进行设置:

//询问用户权限
        //测试访问用户权限
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED)
        {
            /**
             * 可以同时询问开启两个权限
             * ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
             *Manifest.permission.ACCESS_FINE_LOCATION}, 1);
             */
            ActivityCompat.requestPermissions(
                    this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    1);
        }
        else{
            StartMethod();
        }


@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //这里实现用户操作,或同意或拒绝的逻辑
        /*grantResults会传进android.content.pm.PackageManager.PERMISSION_GRANTED
        或 android.content.pm.PackageManager.PERMISSION_DENIED两个常,
        前者代表用户同意程序获取系统权限,后者代表用户拒绝程序获取系统权限*/

        //Log.d(TAG,"requestCode:------"+requestCode);
        if(requestCode==1){
            switch (grantResults[0]){
                case 0:
                    Log.d(TAG,"_________ok");
                    StartMethod();
                    break;
                case 1:
                    Log.d(TAG,"_________no");
                    break;
            }
        }
    }



如果用户拒绝,为什么不执行此方法?后期了解。

猜你喜欢

转载自blog.csdn.net/qq_35343446/article/details/79304171