Permission denied on writing to external storage despite permission

后端 未结 6 1388
攒了一身酷
攒了一身酷 2020-12-01 15:07

I have an Android 7.0 test device and my APK targets = \"targetSdkVersion 22\", with:



        
6条回答
  •  时光说笑
    2020-12-01 15:41

    Android N introduces a new model of permissions which only asks for permissions when the app really needs it rather than during installation like it previously did.

    Use the following code to ask for permissions

    Note - Also add the required permissions in the Manifest file

    If you aren't asking permissions from Main Activity pass the reference to the context/activity

    The following example shows example for asking permissions to Write to external storage, multiple permisisons can be requiested at the same time (Not recommended by google).

    public class MainActivity extends AppCompatActivity {
    /**
     * Variables for requiesting permissions, API 25+
     */
    private int requestCode;
    private int grantResults[];
    
    
    /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {if(ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED ){
            //if you dont have required permissions ask for it (only required for API 23+)
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},requestCode);
    
    
            onRequestPermissionsResult(requestCode,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},grantResults);
        }
    
        @Override // android recommended class to handle permissions
        public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
            switch (requestCode) {
                case 1: {
    
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    
                    Log.d("permission","granted");
                } else {
    
                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.uujm
                    Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
    
                    //app cannot function without this permission for now so close it...
                    onDestroy();
                }
                return;
            }
    
            // other 'case' line to check fosr other
            // permissions this app might request
        }
    }
    

提交回复
热议问题