Android: Intent.ACTION_SEND avec EXTRA_STREAM ne joint aucune image lors du choix de l'application Gmail sur htc Hero
Sur l'Émulateur avec une messagerie par défaut-app tous fonctionne bien. Mais je n'ai pas de joindre lorsque je suis de la réception d'un mail que j'ai envoyé à partir de mon Héros à l'aide d'une application Gmail. L'application de Messagerie par défaut sur le héros fonctionne très bien.
Comment puis-je faire de ce code fonctionne avec l'application Gmail sur le Héros?
Vous pouvez voir le code ci-dessous.
private void startSendIntent() {
Bitmap bitmap = Bitmap.createBitmap(editableImageView.getWidth(), editableImageView.getHeight(), Bitmap.Config.RGB_565);
editableImageView.draw(new Canvas(bitmap));
File png = getFileStreamPath(getString(R.string.file_name));
FileOutputStream out = null;
try {
out = openFileOutput(getString(R.string.file_name), MODE_WORLD_READABLE);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) out.close();
}
catch (IOException ignore) {}
}
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(png));
emailIntent.setType("image/png");
startActivity(Intent.createChooser(emailIntent, getString(R.string.send_intent_name)));
}
dans les Logs je vois les suivantes:
02-05 17:03:37.526: DEBUG/Gmail(11511): URI FOUND:file:///sdcard/DCIM/100MEDIA/IMAG0001.jpg
02-05 17:03:37.535: DEBUG/Gmail(11511): ComposeActivity added to message:0 attachment:|IMAG0001.jpg|image/jpeg|0|image/jpeg|LOCAL_FILE|file:///sdcard/DCIM/100MEDIA/IMAG0001.jpg size:0
02-05 17:03:37.585: INFO/Gmail(11511): >>>>> Attachment uri: file:///sdcard/DCIM/100MEDIA/IMAG0001.jpg
02-05 17:03:37.585: INFO/Gmail(11511): >>>>> type: image/jpeg
02-05 17:03:37.585: INFO/Gmail(11511): >>>>> name: IMAG0001.jpg
02-05 17:03:37.585: INFO/Gmail(11511): >>>>> size: 0
Merci pour la réponse.
source d'informationauteur shinydev | 2010-02-05
Vous devez vous connecter pour publier un commentaire.
Pour moi le problème a été résolu avec les lignes de code suivantes:
L'essentiel, c'est que je l'enregistrement de la capture d'écran de la bibliothèque multimédia, puis il peut envoyer un fichier à partir de là.
getFileStreamPath()
ouopenFileOutput()
va créer des fichiers dans un répertoire privé qui est inaccessible à d'autres applications (c'est à dire de Gmail). L'utilisation de stockage externe pour créer publiquement accessible de fichiers:Cela ne fonctionnera pas lorsque le stockage externe n'est pas disponible, comme quand il est monté comme un disque USB. Voir la API de stockage Guide de l' pour en savoir plus sur la détection de savoir si de stockage externe est disponible.
Si votre API minimum de niveau est de 8 ou plus, vous pouvez utiliser
Context.getExternalCacheDir()
ouEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
que le répertoire parent.À moins que vous vous retrouvez à l'aide de
getExternalCacheDir()
assurez-vous d'utiliser un nom de fichier unique pour empêcher l'un des utilisateurs les fichiers accidentellement écrasés.Enfin, vous pouvez remplacer
onActivityResult()
pour supprimer le fichier après l'opération est terminée:J'ai eu les mêmes symptômes. Dans mon cas, c'était parce que j'étais initialement enregistrement de la pièce jointe avec les autorisations
MODE_PRIVATE
. Dès que je l'ai changé pourMODE_WORLD_READABLE
il semble que Gmail était alors en mesure d'accéder au fichier et envoyer la pièce jointe correctement. Bien que je vois dans votre extrait de code que vous utilisezMODE_WORLD_READABLE
... bizarre.http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE