简体   繁体   中英

Request code for permissions in android

Please help me to get request code for permissions "WRITE_EXTERNAL_STORAGE" and "WRITE_SETTINGS". Also let me know source for request codes.

A simple demo:

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {

      ActivityCompat.requestPermissions(thisActivity,
              new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
              YourRequestCode);
}

You can set YourRequestCode any value,like 1 .

FOR XAMARIN FORMS
inject this code in MainActivity

        protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        string[] perm = new string[] { Manifest.Permission.WriteSettings, Manifest.Permission.WriteExternalStorage };
        RequestPermissions(perm, 1);
        Permission WESCheck = ContextCompat.CheckSelfPermission(Android.App.Application.Context, Manifest.Permission.WriteExternalStorage);
        Permission WSCheck = ContextCompat.CheckSelfPermission(Android.App.Application.Context, Manifest.Permission.WriteSettings);

        base.OnCreate(savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());
    }

You can pass any integer value you want as the request code .
The point of the request code is that you can distinguish between different permission requests in the onRequestPermissionsResult handler. The documentation example is as follows:

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted, yay! Do the
                // contacts-related task you need to do.
            } else {
                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request.
    }
}

Here, MY_PERMISSIONS_REQUEST_READ_CONTACTS is some constant variable containing the request code. The requesting line might look like this:

int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 1337;    
ActivityCompat.requestPermissions(context,
                                   new String[]{Manifest.permission.READ_CONTACTS}, 
                                   MY_PERMISSIONS_REQUEST_READ_CONTACTS );
public void getPermission() {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_CONSTANT);
    } else {
        uiBind();
    }
}

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

            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                getPermission();
            }
            break;
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM