0

Wenn ich also die Methode requestContactPermission aufruft, wird der Dialog normal angezeigt, aber wenn ich auf die Schaltfläche zum Zulassen klicke, wird das Fragment geschlossen und die Aktivität neu erstellt? was scheint das Problem zu sein ? zeigen die Log-Dosis nichtsAndroid Marshmallow: Aktivität wird nach Erteilen der Berechtigung erneut erstellt

private void requestContactPermission() { 

     if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)) { 
      getLoaderManager().initLoader(0, null, this); 
     } else { 
      requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, 
        101); 
     } 

    } 
    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case 101: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        getLoaderManager().initLoader(0, null, this); 
       } 
       break; 
     } 
    } 

mein Hauptproblem ist, wenn ich es testen in Emulator seine Werke in Ordnung, aber wenn ich es in realen Gerät testen, wie Galaxy S7 Rand

+0

um Erlaubnis fragen früh, ziehe ich fragen, es in der 'Activity' Sie dieses Fragment haben – Sanoop

+0

@Sanoop bereits versucht es, das gleiche Resultat –

+0

Ok .. Ist das' Activity' Sie um Erlaubnis zu fragen in. Ist die Haupt-oder Standard-Aktivität "Aktivität", wenn nicht in der 'MainActivity' nach Erlaubnis gefragt .. Dadurch müssen Sie nur die Berechtigung in' onCreateView' des Fragments überprüfen. So wird die 'Aktivität' nicht neu erstellt ... – Sanoop

Antwort

0

dieses Problem, das ich habe Probieren Sie es aus.

if (ContextCompat.checkSelfPermission(getActivity(), 
       Manifest.permission.READ_CONTACTS) 
       != PackageManager.PERMISSION_GRANTED) { 
      Log.d(TAG, "Requesting Runtime Permission Read contact"); 

      ActivityCompat.requestPermissions(getActivity(), 
        new String[]{Manifest.permission.READ_CONTACTS}, 
        101); 
     } else { 

     Log.d(TAG, "Previously User have provided Read contact access"); 

     } 


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

     switch (requestCode) { 

      case 101: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        Log.d(TAG, "Write External Storage Access granted"); 

        downloadCurrentImage(); 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 

       } else { 


        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
       } 
      } 

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

Ich habe es schon versucht, ich habe das gleiche Ergebnis –