Как добавить мое приложение в диалог "Открыть с помощью"?

Мне нужно мое приложение для Android, чтобы быть в Open With диалог для файлов SQLite.

Как и при установке нового веб-браузера, он появится в Open With диалог для html-файлов.

Как я могу это сделать?

2 ответа

Этот ответ я нашел в русском Stackru: https://ru.stackru.com/a/420927/180697

<activity name="com.your.activity">
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="file" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.sqlite" />
</intent-filter>

Это то, что вам нужно добавить в свой класс Activity:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    final Intent intent = getIntent();  
    final String action = intent.getAction();

    if(Intent.ACTION_VIEW.equals(action)){
        Uri uri = intent.getData();
        new File(uri.getPath()); //дальше делаем все, что надо с файлом 
    } else {
        Log.d(TAG, "intent was something else: "+action);
    }
}

Так что мне нужно только понять, что писать в действии!)) Спасибо!

Чтобы появиться в диалоговом окне "Открыть с помощью", ваше приложение Android должно объявить в своем манифесте, что оно обрабатывает конкретное намерение, а затем указать тип mime файла в намерении. Например:

<intent-filter >
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/x-sqlite" />
</intent-filter>

Обратите внимание, что MIME-тип для SQLite может быть не распознан, так как я не думаю, что это пока стандарт. Возможно, вы захотите использовать application / octet-stream вместо этого, а затем в своем собственном коде дважды проверить, что предоставленный файл действительно является допустимым файлом SQLite (что вы должны сделать в любом случае).

Вы можете найти больше информации о тегах здесь и о намеренных фильтрах в целом здесь

Другие вопросы по тегам