Best Practice - Hinzufügen Ihrer App zum Android Share-Menü
Meine App sendet Dateien (alle MIME-Typen) über eine TCP-Verbindung, und daher wollte ich, dass meine App im Android Share-Menü angezeigt wird.
Ich habe meiner Aktivität in die folgenden Absichtsfilter hinzugefügtAndroidManifest.xml
<intent-filter ><!--intent filter for single file sharing-->
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter ><!--intent filter for sharing multiple files-->
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
Jetzt habe ich dies zum. HinzugefügtActivity
welches beim Klicken auf die Share-Aktion gestartet werden soll
Intent intent = getIntent();
if (Intent.ACTION_SEND.equals(intent.getAction())) {
Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri != null) {
fileset = new HashSet();
fileset.add(getPathfromUri(uri));
}
} else if (Intent.ACTION_SEND_MULTIPLE.equals(intent.getAction())) {
ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (uris != null) {
fileset = new HashSet();
for(Uri uri : uris) {
fileset.add(getPathfromUri(uri));
}
}
}
Ich benutze diese Methode, um die absoluten Pfade der Dateien zu generieren, die gemeinsam genutzt werden sollen.
public String getPathfromUri(Uri uri) {
if(uri.toString().startsWith("file://")) {
return uri.getPath();
}
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String path= cursor.getString(column_index);
//cursor.close();
return path;
}
Mit der obigen Methode wird der absolute Pfad von Bildern / Videos und anderen Dateien ordnungsgemäß abgerufen. Gibt es etwas, das ich verpasst habe, oder gibt es eine bessere Möglichkeit, dies zu tun?
In Ergänzung zuShare
Menü gibt es eineSend Via
Menü auf meinem Telefon.
Gibt es eine Möglichkeit, meine App in diese Liste aufzunehmen?