Marshmallow permission

帅比萌擦擦* 提交于 2019-12-11 06:37:53

问题


I'm trying to check permission in activity as below,

int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNT);

But I'm getting error at GET_ACCOUNT as Cannot resolve symbol 'GET_ACCOUNT'. Kindly help what code should I add to fix this?

Thanks in advance.


回答1:


It should be

Manifest.permission.GET_ACCOUNTS

instead of

Manifest.permission.GET_ACCOUNT  

Try like this

int permission = ContextCompat.checkSelfPermission(this,Manifest.permission.GET_ACCOUNTS);

Don't forget to add permission on your Manifest

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

Import this library in your class

import android.Manifest;



回答2:


First GET_ACCOUNT is not defined in android.Manifest.permission, it is GET_ACCOUNTS

Second, change your Manifest file to use GET_ACCOUNTS

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

then in your code file i.e. java file write like this.

ContextCompat.checkSelfPermission(this, android.Manifest.permission.GET_ACCOUNTS);

Check documentation GET_ACCOUTNS.




回答3:


The following code worked for me,

Declare below code as:

public static final int PERMISSIONS_REQUEST_GET_ACCOUNT = 133; // any number

Call following code in your onCreate method:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
        if(ContextCompat.checkSelfPermission(Activity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(SplashActivity.this,
                    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION,
                            Manifest.permission.CAMERA,
                            Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.GET_ACCOUNTS},
                    PERMISSIONS_REQUEST_GET_ACCOUNT);
        }else{
            //furtherCode
        }
    }else{
        //furtherCode
    }

in method onRequestPermissionsResult method,

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch(requestCode){
        case PERMISSIONS_REQUEST_GET_ACCOUNT :
            if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                Toast.makeText(this, "Granted", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(this, "No such permission to access account!", Toast.LENGTH_SHORT).show();
            }
            break;
    }
}


来源:https://stackoverflow.com/questions/39717592/marshmallow-permission

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!