Ich muss eine Reihe von Dateien an eine E-Mail anhängen, aber ich bekomme einen Fehler beim Aufruf der Absicht.Android "keine Anwendungen können diese Aktion durchführen" mit "send_multiple", sendto funktioniert gut
Wenn ich Intent.ACTION_SENDTO verwende, gibt die Auswahl die Google Mail App und den generischen E-Mail-Client zurück. Wenn ich jedoch versuche, Intent.ACTION_SEND_MULTIPLE als Parameter zu übergeben, erhalte ich keine Anwendungen, die die Absicht erhalten könnten. Wie löse ich das?
Hier ist der Code, den ich verwende.
ArrayList<Uri> attachments = new ArrayList<>();
File path = new File(Environment.getExternalStorageDirectory() + "appFolder");
if (path.exists()){
for (File child : path.listFiles()) {
attachments.add(Uri.fromFile(child));
}
//Intent intent = new Intent(Intent.ACTION_SENDTO);//This works, but I can't attach several files.
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);//This is the part that SHOULD work, but doesn't...
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{""});
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_SUBJECT, "");
intent.putExtra(Intent.EXTRA_TEXT, "");
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, attachments);
try {
startActivity(Intent.createChooser(intent, "Send Email"));
} catch (ActivityNotFoundException anfe) {
anfe.printStackTrace();
}
}
Es hat gut funktioniert! Ich hatte nicht erwartet, dass nur durch Entfernen eines Paares von optionalen Parametern funktionieren würde. Vielen Dank. – Stalker
@Stalker: Das Extra ist optional. 'setData()', auf der anderen Seite, sagt, dass Sie Aktivitäten erwarten, die 'Uri' unterstützen. In Ihrem Fall würden Sie sagen, dass Sie Aktivitäten erwarten, die 'mailto:' unterstützen. Da keine 'ACTION_SEND_MULTIPLE'-Implementierung die 'Uri' verwenden soll, wird ihr' 'nicht dafür werben, dass sie' mailto: 'unterstützen. Netz: Keine Übereinstimmungen auf Ihrer Absicht. Das Entfernen dieses 'Uri' entfernt diese Anforderung von Übereinstimmungen und öffnet andere Kandidaten. Denken Sie daran, dass Sie immer noch mit Geräten umgehen müssen, die keine solchen Übereinstimmungen haben. –
CommonsWare