J'essaie d'obtenir l'image de l'application tierce (par exemple WhatsApp) à mon application (en cours de test sur Marshmallow). Quand je fais « image part » de WhatsApp et le partager avec mon application, je reçois URI quelque chose comme ceci:Android: Obtention d'image bitmap à partir d'une application tierce (par exemple WhatsApp) via le contenu: // URI
content://com.whatsapp.provider.media/item/61025
Mais dans mon application quand je l'appelle getContentResolver().openInputStream(uri)
ou getContentResolver().openFileDescriptor(uri, "r")
avec au-dessus de l'URI, il se bloque à l'exception:
java.lang.SecurityException: Permission refusée: ouverture fournisseur com.whatsapp.MediaProvider de ProcessRecord {a4b804a 30321: com.myapp/u0a145} (pid = 30321, uid = 10145) qui ne sont pas exportés de uid 10083
Ce que j'ai essayé jusqu'à présent
Je regardai cette exception sur le SO et trouvé similar question posées, mais d'importer des images de Google Photos et nous avons obtenu ce besoin d'ajouter la permission comme:
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>
Mais pas convié avec cela, car il pourrait y avoir beaucoup d'applications et besoin d'ajouter des autorisations pour chacun d'eux ou quoi.
Dans d'autres answers il a été suggéré de lire/copier les données du fournisseur de contenu immédiatement. Mais je ne sais pas comment. Parce que je reçois une exception dans openInputStream
lui-même.
Je dois aussi mentionner que l'image WhatsApp peut être partagée avec d'autres applications (par exemple Google Drive), donc il doit y avoir un moyen de le faire.
S'il vous plaît quelqu'un peut donner des conseils de partage ou une solution de travail à ce sujet?
Avez-vous la permission de lire à partir du stockage externe et vérifié pendant l'exécution? –
ce fournisseur n'est pas exporté, seul un sous-ensemble limité de paquets peut y accéder (comme google drive) mais votre application n'est pas autorisée à le faire – pskink
@Nabin oui j'ai la permission – Atul