2017-12-31 115 views
0

Wie Sie sehen, ist dies mein Code, ich habe mehrere Anwendungen erstellt, in denen ich mehrere Berechtigungsmethoden ohne Probleme verwendet habe. In diesem Fall habe ich nur eine Aktivität, aber es gibt mir einen Fehler, während ich das Anfrageerlaubnis-Ergebnis zurückgeben möchte.java lang RuntimeException: Fehler beim Liefern des Ergebnisses für die Aktivität

Code:

public class ActivityStartUp extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback { 
    private static final String[] PERMISSIONS = { "android.permission.CAMERA", 
      "android.hardware.camera", "android.hardware.camera.autofocus", 
      "android.hardware.camera.flash", 
      "android.permission.ACCESS_COARSE_LOCATION", 
      "android.permission.WRITE_EXTERNAL_STORAGE", 
      "android.permission.READ_EXTERNAL_STORAGE" , 
      "android.permission.READ_PHONE_STATE"}; 

    private static final int PERMISSION_CODE = 0xBAB0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_startup); 

     if (Utilities.hasMarshmallowApi()) { 
      requestPermissions(PERMISSIONS, PERMISSION_CODE); 
     }else{ 
      //Open an activity 
     } 

    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, 
              String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case PERMISSION_CODE: { 
       if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        G.permissionGrantStatus = true; 
        Log.i("Log", "Permission Status:" + true); 
        if(Utilities.hasMarshmallowApi()){ 
         // Do something 
        } 
        // Do task 
       } else { 
        G.permissionGrantStatus = false; 
        Log.i("Log", "Permission Status:" + false); 
        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
       } 
       return; 
      } 
     } 
    } 
} 

Fehler:

java.lang.RuntimeException: Failure delivering result 
ResultInfo{[email protected]android:requestPermissions:, request=47792, result=-1, 
data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} 
to activity {com.bvapp.sh.uni.watermanagement/com.bvapp.sh.uni.watermanagement.ActivityStartUp}: 
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 

Wie Sie Fehler sehen "grantResults" hat 0 Länge. Ich habe versucht, eine gute Lösung zu finden, aber leider konnte ich keinen richtigen finden. warum es passiert und wie soll ich es lösen? Vielen Dank im Voraus.

Antwort

1

Vielleicht ist you'r Problem (aus: OnRequestPermissionsResultCallback() - Android Developer)

Note: It is possible that the permissions request interaction with the user is interrupted. In this case you will receive empty permissions and results arrays which should be treated as a cancellation.

+0

Nun, ich es bin immer noch überprüft, überraschend dieses Problem gelöst, wenn ich von manifesten der Berechtigungen entfernt Ganze. Wenn ich eine Erlaubnis hinzufügen will, gibt es mir diesen Fehler wieder !!!! @T. Schlechtweg –

+0

@Mohsen Hatami Überprüfen Sie Ihren Aufruf von 'requestPermissions();' in [Anfordern von Berechtigungen] (https://developer.android.com/training/permissions/requesting.html) besagt, dass 'requestPermissions()' benötigt 3 Argumente anstelle von 2. Sind Sie sicher, dass Ihre Anfrage nicht storniert wird? –

+1

@MohsenHatami auch nur die Länge des Arrays überprüfen, 'if (grantResults.length> 0)', wenn Sie den Fehler nicht wollen. –

Verwandte Themen