2017-05-17 6 views
0

In meiner Anwendung möchte ich bestimmte Funktion, die in nicht-Aktivität-Klasse vorhanden sind, aber vor dieser Funktion sollte überprüfen, ob eine Erlaubnis gewährt wird oder nicht. Ich handle Anfrage Erlaubnis in der Laufzeit aber wie ich überprüfen kann, wenn der Benutzer diese Berechtigung verweigern und überprüfen, nie wieder zu zeigen.
Check M Berechtigung gewährt oder verweigert von nicht Aktivität Klasse

In meinem Fall prüfe ich, wenn die Erlaubnis erteilt wird mit

if(ContextCompat.checkSelfPermission(context,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) 

aber geben Sie mir falsch jedes Mal, wenn ich auch zu prüfen es, wenn die Erlaubnis eingestellt Always deny von Einstellungen und beim Versuch, es zu überprüfen eine andere Art und Weise mit

aber auch geben Sie mir falsch, wenn die Berechtigung verweigern und überprüfen Sie nie wieder zeigen.

so was ist der beste Weg, um zu überprüfen, wenn der Benutzer eine Erlaubnis verweigern und nie wieder überprüfen from run time permission dialog or deny it from application settings

+0

https://stackoverflow.com/q/31928868/115145 – CommonsWare

Antwort

1

hier ist der Code für die Erlaubnis, die Überprüfung besonders.

private void requestP() { 

// Write all permissions in PERMISSIONS array 

    String[] PERMISSIONS = {Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; 

    if (!hasPermissions(this, PERMISSIONS)) { 
     ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); 
    } 

} 

public static boolean hasPermissions(Context context, String... permissions) { 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
     for (String permission : permissions) { 
      if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

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

     case PERMISSION_ALL: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0) { 

       if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        // Read Phone State Permission allowed 
       } else { 
        // Read Phone State Permission denied 
       } 

       if (grantResults[1] == PackageManager.PERMISSION_GRANTED) { 

        // Write External Storage Permission allowed 
       } else { 
        // Write External Storage Permission denied 
       } 


      } else { 

       // All Permissions denied 
      } 
      // runAfterPermissionGranted 

      return; 
     } 

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

können Sie Flags speichern für alle Berechtigungen in onRequestPermissionResult() und die Flagge überprüfen, wann immer Sie wollen.

Verwandte Themen