If not what is the workaround to prompt user to setting page or any other solution ?
            Asked
            
        
        
            Active
            
        
            Viewed 2,652 times
        
    5
            
            
        - 
                    uninstall and install again, It will work for me. – D.J Oct 04 '16 at 08:01
- 
                    don't check the boolean value for `shouldShowRequestPermissionRationale()` – Aman Grover Oct 04 '16 at 08:06
1 Answers
9
            You can't open the request permission dialog if user selects Never Ask Again. But you can show the information to user.
@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case REQUEST_CODE:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_SHORT).show();
                    // do your work here
                } else if (Build.VERSION.SDK_INT >= 23 && !shouldShowRequestPermissionRationale(permissions[0])) {
                    Toast.makeText(MainActivity.this, "Go to Settings and Grant the permission to use this feature.", Toast.LENGTH_SHORT).show();
                   // User selected the Never Ask Again Option
                } else {
                    Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    } 
Settings Screen: To open the settings screen you can use the below intent.
    Intent i = new Intent();
    i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    i.addCategory(Intent.CATEGORY_DEFAULT);
    i.setData(Uri.parse("package:" + context.getPackageName()));
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    context.startActivity(i);
For more info you can check the thread on How to programmatically open the Permission Screen for a specific app on Android Marshmallow?
 
    
    
        Community
        
- 1
- 1
 
    
    
        Deepak Goyal
        
- 4,747
- 2
- 21
- 46
