0

Ce que j'essaie de faire:« Erreur, ne pouvait pas charger les médias » lors d'une tentative d'appeler l'intention des cultures application Photos envoi Uri pointant vers des fichiers dir

Sélectionnez une photo de mes photos Facebook et envoyez que photo à l'expérience native de retouche photo (l'app Photos)

Voici les étapes que je prends:

  1. Get url pour la photo de fb
  2. Utilisez Picasso iront chercher url image dans Bitmap
  3. Store qui Bitmap dans un fichier sur le disque dans mon application spécifiques/données/données/dir
  4. Créer un Uri à partir de ce chemin du fichier
  5. Envoyer qu'Uri comme les données partie de l'intention implicite pour l'action "com.android.camera.action.CROP"

Je suppose que le problème est que l'application Photos n'a pas l'autorisation d'accéder au fichier dans mon/data/dir de données, mais je suis curieux de savoir si quelqu'un peut confirmer que c'est effectivement le problème et, si oui, comment vous avez résolu. Je suppose que la solution consiste à enregistrer le fichier sur la carte SD à la place afin que l'application Photos puisse y accéder?

Ok, voici un code ...

Après que j'ai écrit le Bitmap à déposer, j'appelle cela pour obtenir Uri

Uri pictureUri = Uri.fromFile(new File(path)) 

J'envoie ensuite que Uri à la culture intention comme si

Intent intent = new Intent("com.android.camera.action.CROP"); 
     intent.setDataAndType(pictureUri, "image/*"); 

et commencer l'activité pour Résultat

activity.startActivityForResult(intent, RequestCode.CROP_IMAGE); 

Des commentaires très appréciés!

Répondre

1

Vous avez raison que le partage de fichiers entraîne souvent des problèmes d'autorisation, en particulier depuis READ_EXTERNAL_STORAGE est une autorisation dangereuse sur Android 6.0+ appareils plus (vous obligeant à

, vous devriez plutôt suivre le sharing files training et utiliser FileProvider pour créer un Uri que les autres applications peuvent lire sans les autorisations de stockage (de votre part ou de la part de l'autre application)

+0

Merci FileProvider a bien fonctionné, mais j'ai de la difficulté à récupérer des informations utiles dans onActivityResult(). avec un code de résultat de 0 pour une raison quelconque. –