J'ai donc un bouton Partager qui partagera une image et un corps de texte.Pourquoi mon ACTION_SEND fonctionne-t-il parfaitement sur l'API 25+, mais il gâche les API précédentes?
Sur Nougat (API 25) et Oreo (API 26), il fonctionne parfaitement. Mais quand il s'agit d'une version plus ancienne, cela ne fonctionne pas comme prévu.
Marshmallow (API 23): insère l'image très bien mais aucun corps de texte. Lollipop (API 22): Plantage lorsque vous appuyez sur le bouton Partager avec une erreur contextuelle "Malheureusement, la messagerie s'est arrêtée." LOGCAT ne montre aucune erreur lorsque cela se produit.
Voici mon bouton Partager code:
if (id == R.id.action_shareWine) {
Intent intentShare = new Intent(Intent.ACTION_SEND);
intentShare.putExtra(intentShare.EXTRA_STREAM, imageURI);
intentShare.setType("image/*");
intentShare.putExtra(Intent.EXTRA_TEXT, "body of text goes here");
if (intentShare.resolveActivity(getPackageManager()) != null) {
startActivity(intentShare);
}
return true;
}
Voici une image pour donner une idée visuelle de ce qui se passe:
Quelqu'un a des idées ce qui pourrait se passer ici?
MISE À JOUR 1
Voici le journal du crash de l'émulateur Lollipop:
FATAL EXCEPTION: Mms-1
Process: com.android.mms, PID: 7570
java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
Ce que je ne sais pas pourquoi cela se produit parce que le curseur est chargement de l'image juste bien dans un ImageView dans cette même activité.
Quelle est la valeur de 'imageURI'? De plus, puisque c'est votre image et que vous connaissez le type MIME, pourquoi utilisez-vous un caractère générique? – CommonsWare
'imageURI = Uri.parse (cursor.getString (cursor.getColumnIndexOrThrow (WineContract.WineEntry.COLUMN_WINE_IMAGE)))' Je sais que le curseur possède l'URI correcte car ce même code est capable de définir une image dans l'activité. – andrdoiddev
Comme le commentaire précédent a dit, je suis assez sûr que "image/*" n'est pas supporté par tous les fabricants et les appareils. Vous devez spécifier le type de mine exact "image/jpeg" ou "image/png" – AlonsoFloo