2016-03-28 5 views
1

ich einen Code habe, dass die folgenden Schritte ausführen:android 23 uri Erlaubnis Leugnung

  1. Ich habe READ_EXTERNAL_STORAGE und WRITE_EXTERNAL_STORAGE in manifest
  2. im Foto uri von Telefon bekommen Sie wählen und es in Fragment setzen und stecken in viewpager .
  3. es funktioniert gut auf sdk 22 unten.
  4. aber wie auf Android 23 halten sie auf
  5. sagen

Erlaubnis Denial java.lang.SecurityException: Permission Denial: Eröffnung Anbieter com.google.android.apps.photos.contentprovioder.MediaContentProvider von ProcessRecord

was zu meinen Code auf der Leitung in Fragment Seite beziehen

/*********************

Bitmap = BitmapFactory.decodeStream (cr.openInputStream (uri), null, Option);

, die ich innerhalb Resize() -Methode

setzen

**********************/

  1. Ich habe versucht zu lesen, entwickeln Sie Konsolen-Dokumente und beachten Sie, dass wir die Berechtigung überprüfen und Benutzer danach fragen müssen.

meine Fragen ist 1. die Erlaubnis sollte ich fragen, Ich habe versucht, und WRITE 2. Wo soll ich die Prüfungserlaubnis umgeben für es außerhalb der Methode? oder einfach die Linie umgeben.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 

      int hasPermission = checkSelfPermission(context, 
        Manifest.permission.READ_EXTERNAL_STORAGE); 

      if (hasPermission != PackageManager.PERMISSION_GRANTED) { 


       requestPermissions(
         new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
         RESULT_PERMS_INITIAL); 

      } else { 

       bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, option); 
      } 
     } else { 

      bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, option); 
     } 

und auf Anfrage für Ergebnis

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

    if (requestCode == RESULT_PERMS_INITIAL) { 

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

      bitmap = resizeBitmap(uri, getActivity().getApplicationContext()); 
     } 

     else { 

      Toast.makeText(context, "error", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    else { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 

Antwort