Как добавить мое приложение в диалог "Открыть с помощью"?
Мне нужно мое приложение для 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 (что вы должны сделать в любом случае).
Вы можете найти больше информации о тегах здесь и о намеренных фильтрах в целом здесь