Najlepsza praktyka - dodawanie aplikacji do menu udostępniania Androida

Moja aplikacja wysyła pliki (wszystkie typy MIME) przez połączenie TCP i dlatego chciałem, aby moja aplikacja pojawiła się w menu udostępniania Android.

Dodałem następujące filtry intencji do mojej aktywności wAndroidManifest.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>

Teraz dodałem to doActivity który ma zostać uruchomiony po kliknięciu akcji akcji

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));
        }
    }
}

Używam tej metody do generowania absolutnych ścieżek plików, które mają być udostępniane.

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;
}

Powyższa metoda poprawnie pobiera bezwzględną ścieżkę obrazów / filmów i innych plików. Czy jest coś, co przegapiłem lub czy jest lepszy sposób na zrobienie tego?

DodatkowoShare menu, jestSend Via menu na moim telefonie.

Czy istnieje sposób na umieszczenie mojej aplikacji na tej liście?

questionAnswers(3)

yourAnswerToTheQuestion