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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage