Передовой опыт: добавление вашего приложения в меню Android Share

Мое приложение отправляет файлы (все типы MIME) через TCP-соединение, и поэтому я хотел, чтобы мое приложение отображалось в меню Android Share.

Я добавил следующие фильтры намерений в свою активность в AndroidManifest.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>

Теперь я добавил это в активность, которая должна запускаться при нажатии кнопки «Поделиться»

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

Я использую этот метод для создания абсолютных путей к файлам, которые должны быть общими.

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

Приведенный выше метод правильно извлекает абсолютный путь к изображениям/видео и другим файлам. Я что-то упустил или есть лучший способ сделать это?

Помимо меню Поделиться, на моем телефоне есть меню Отправить через. screenshot

Есть ли способ добавить мое приложение в этот список?

23
задан zeroDivider 26 December 2018 в 13:28
поделиться