2015-05-05 5 views

ответ

2

Чтобы появилось диалоговое окно «Открыть с», ваше приложение 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 не может быть распознан, поскольку я не думаю, что это еще не стандарт. Вместо этого вы можете использовать приложение/октет-поток, а затем в своем собственном коде, дважды проверьте, что предоставленный файл на самом деле является допустимым SQLite-файлом (который вы должны делать в любом случае).

Вы можете найти более подробную информацию о тегах here и о намерениях фильтров в общем here

+0

Спасибо! Но как приложение будет работать с этим файлом? В моем случае приложение должно сохранить файл SQLite в '/ data/data/package-name/databases' –

+0

Я не уверен, что понимаю вопрос. Как вы пытаетесь открыть файл? то есть где SQLite-файл, который вы пытаетесь открыть для своего приложения? –

1

Этот ответ я нашел в русском StackOverflow: https://ru.stackoverflow.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> 

Это то, что вам нужно добавить в ваш класс деятельности:

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

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

Смежные вопросы