Ich habe den folgenden Code implementiert Video zu teilen:Warum verhält sich ACTION_SEND nicht wie die Freigabe-Schaltfläche der Galerie?
// Copy video file to Fileprovider directory.
final String destFile = …
// Build FileProvider uri.
final Uri uri = FileProvider.getUriForFile(activity, AUTHORITY, destFile)
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.setType("video/*");
Log.d(TAG, "Sharing " + sendIntent.getType() + " for " + uri);
String title = "Share this content with";
Intent chooser = Intent.createChooser(sendIntent, title);
if (null != sendIntent.resolveActivity(activity.getPackageManager())) {
activity.startActivity(chooser);
}
Dieser Code funktioniert und zeigt die Auswahl. Wenn ich eine Messaging-App wie Telegram auswähle, kann ich die Zielkonversation auswählen, aber das Video wird als Dateianlage gesendet, was bedeutet, dass Benutzer nur ein Dokumentsymbol sehen und es herunterladen und extern öffnen müssen. Das gleiche Video, das die OS-Systemgalerie verwendet, öffnet jedoch Telegram in ihren Videoeditor, wo sie die Medien schneiden/bearbeiten können und wenn sie gesendet werden, sind sie in der Konversation sichtbar.
Was fehlt mir, um das gleiche Verhalten zu erhalten? Beim Durchsehen von Android-Git-Repositories sehe ich nichts anderes, um Inhalte zu teilen, also weiß ich nicht, was mir fehlt. Das Protokoll ich mit diesem Code erhalten sieht aus wie
Sharing video/* for content://com.app.android.fileprovider/share/video-a.mp4
Also nicht nur, dass es den Mime-Typen, sondern auch die Dateierweiterung helfen könnte. Wenn ich den Code ändere, um einen anderen Mime-Typ für Bilder zu verwenden, dann bekomme ich das gleiche Verhalten, wo die Bilder in den Chat von Telegram eingebunden werden.
Verwenden Sie LogCat, um zu sehen, welche "Absicht" die "OS-Systemgalerie" verwendet. Bitte beachten Sie, dass es keine "OS Systemgalerie" gibt; Auf Android-Geräten sind Dutzende, wenn nicht Hunderte, verschiedener Galerie-Apps vorinstalliert, andere stehen zum Download bereit. – CommonsWare
Die Absicht ist die gleiche '{act = android.intent.action.SEND typ = video/* flg = 0xb080001cmp = org.telegra m.messenger/org.telegram.ui.LaunchActivity (hat Clip) (hat Extras)} ', mit dem gleichen Mime-Typ. –