Mon application permet à l'utilisateur d'afficher certaines images sélectionnées dans la galerie ou ailleurs. Je demande au Uri de d'images par:L'autorisation pour une image de la galerie est perdue après la relance
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, PickerFragment.PICK_PHOTO);
Et puis obtenir le Uri dans onActivityResult (int requestCode, int resultCode, les données d'intention) et avoir accès à ces images pour les mettre à la vue de mon application via:
Uri imageUri= data.getData();
lorsque les finitions app, je sauve tout Uri dans ma base de données sous forme de chaînes par:
String imageUriString = imageUri.toString();
saveToDB (imageUriString);
Cependant quand je Relancez l'application et restaurer toutes les dat de mon Uri abase via:
String imageUriString = restoreFromDB();
imageUri = Uri.parse (imageUriString);
l'application n'a plus de droits sur ces Uri dans Android 7.1. J'accès aux images par:
ContentResolver cr = mContext.getContentResolver();
InputStream is = cr.openInputStream(imageUri);
BitmapFactory.decodeStream(is, null, o);
Mais reçoivent cette exception:
java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord
Y at-il une façon élégante et légitime de garder cette permission? J'ai essayé de lire tous les documents sur les autorisations, mais je me sens vraiment confus.
J'apprécierais que vous me donniez la bonne direction pour apprendre.
PS Copier les images dans la mémoire des apps alors que la permission d'Uri dure était une option, mais je voudrais éviter cela. Au moins pour voir si c'est possible. PPS J'ai toutes les autorisations accordées, comme la caméra et le stockage externe écrivent et lisent.
vérifier ce lien https://stackoverflow.com/questions/37409181/java-lang-securityexception-permission-denial-opening-provider – Anonymous
magasin byteArray au lieu de uri.Uri échoue lorsque l'image est pas présent dans la galerie. – Anonymous
@Anonyme, le stockage est une option, mais pas souhaitable. Dans mon cas, Uri échoue même si l'image _is_ présente dans la galerie – rommex