2016-07-31 15 views
0
Arbeits

Ich habe das Tutorial in diesem Link folgen zu können, die Erlaubnis ersuchen, im laufenden Betrieb ermöglichen: https://developer.android.com/training/permissions/requesting.htmlAnfrage Erlaubnis im laufenden Betrieb erlaubt nicht

und es nicht funktioniert, kopiere ich den gleichen Code, aber mit verschiedener Erlaubnis „ACCESS_FINE_LOCATION "

meinen Code als

folgende

in onCreate Methode der Aktivität

int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 
if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 


    if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
      Manifest.permission.ACCESS_FINE_LOCATION)) { 

     DialogUtils.showDialogMessage(this, getString(R.string.error), 
       getString(R.string.error_location_permission_not_granted), getString(R.string.ok), getString(R.string.cancel), new OnClickListener() { 
        @Override 
        public void onClick(View view) { 

        /*ContextCompat.requestPermissions(ItemDetailsActivity2.this, 
          new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
          MAP_PERMISSION_REQUEST_CODE);*/ 
        } 
       }, null); 

    } else { 

     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
       MAP_PERMISSION_REQUEST_CODE); 
    } 
} 

und dies ist der Rückruf

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

    switch (requestCode) { 
     case MAP_PERMISSION_REQUEST_CODE: { 

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

       initalizeMap(); 
      } else { 

       DialogUtils.showDialogMessage(this, getString(R.string.error), getString(R.string.error_location_permission_not_granted), getString(R.string.ok), null); 
      } 
      return; 
     } 
    } 
} 

und dies ist meine Build-Konfiguration

compileSdkVersion 23 
buildToolsVersion '23.0.3' 
minSdkVersion 15 
targetSdkVersion 15 

kann jemand bitte sagen Sie mir, was mit mir nicht in Ordnung ist?

EDIT

, wenn ich sowohl die targetSdkVersion bis 23 in einem offenkundigen und gradle Datei zu ändern, und meine app laufen es gibt mir den folgenden Bildschirm, und wenn ich erlaube drücken, geben Sie mir schwarzen Bildschirm für lange Zeit, und nichts weiter tun

können Sie mir bitte sagen, was ist das Problem jetzt?

enter image description here

+0

Ja, ich laufe auf dem Gerät mit Android-Version 6.0.1 –

Antwort

2

In Zukunft bitte erklären im Detail, was "es nicht funktioniert" bedeutet.

In diesem Fall werde ich raten, dass "es nicht funktioniert" bedeutet "der Dialog für den Benutzer zu gewähren Erlaubnis erscheint nicht". Das liegt daran, dass targetSdkVersion auf 15, nicht 23 oder höher eingestellt ist. Wenn Sie eine targetSdkVersion von 15 haben, sagen Sie, dass Sie die Legacy-Berechtigungsunterstützung möchten, bei der der Benutzer allen Berechtigungen zur Installationszeit zustimmen muss, einschließlich derer mit einer dangerousprotectionLevel.

+0

also schlage ich vor, dass ich die targetSdkVersion zu 23 ändern? –

+0

@AmiraElsayedIsmail: Ich weiß nicht, warum Sie es auf 15 gesetzt haben. Wenn Sie möchten, dass die Laufzeitberechtigungen funktionieren, müssen Sie sie auf mindestens 23 erhöhen. Möglicherweise müssen Sie jedoch noch andere Änderungen an Ihrem Code vornehmen sobald du das tust. Sie müssen die JavaDocs für [die 'VERSION_CODES' zwischen 16 und 23] (https://developer.android.com/reference/android/os/Build.VERSION_CODES.html) überprüfen, um zu sehen, was Sie sonst noch ändern müssen . – CommonsWare

+0

Bitte überprüfen Sie meine Bearbeitung. –