2015-07-08 1 views
5

Я пишу приложение с использованием базы данных SQLite. Я уже закодирован для резервного копирования моей базы данных SQLite. Теперь я хочу иметь возможность восстановить базу данных приложений из такой копии. Я использую диалоговое окно «Открыть от» на устройстве Android. Я вижу файл, если я использую другие поставщики контента в списке, например, например «Передача файлов Bluetooth»! Но я не вижу этого, если попытаюсь использовать параметр «Загрузки».Android: какой тип mime использовать, если я хочу увидеть/выбрать базу данных SQLite из папки «Загрузки»?

Я скопировал базу данных SQLite в папке моих загрузок. Я попытался использовать fileIntent.setType ("/").

Спасибо.

ответ

0

У меня нет полного ответа. Вместо этого я предложу несколько идей.

Я не уверен, что вы подразумеваете под диалогом «Открыть от». Я предполагаю, что вы имеете в виду диалог «Chooser», в котором отображаются значки приложений, которые могут обрабатывать намерение.

Многие приложения для Android используют MimeTypeMap для связывания расширений файлов и MIME-типов. Не существует способа перебора MimeTypeMap для просмотра всех его сопоставлений. Я довольно уверен these are the mappings. В списке для SQLite нет записи. Обычным типом MIME для SQLite будет «application/x-sqlite3».

В вашем посте вы включили fileIntent.setType("/"). Я предполагаю, что вы на самом деле набрали fileIntent.setType("*/*"), и потому, что он не был процитирован, форматировщик съел две звезды.

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

+0

Спасибо, Qbix, что нашли время, чтобы посмотреть на мой вопрос. Да, я имел в виду звездную косую звезду для типа MIME. И это было правильно использовать, я написал некоторый код отладки, чтобы проверить тип Mime-файла SQLite, и это фактически звезда слэш-звезды. –

+0

Диалоговое окно «Открыть» позволяет выбрать «Недавние», «Загрузки», Внешнюю SD-карту, Внутреннее хранилище или использовать из списка приложений. Я мог только выбрать файл, используя некоторые из перечисленных приложений.Например, я мог бы использовать ES File Explorer или Dropbox. –

11

Это application/x-sqlite3. Я использую это в своем приложении.

More info here.

Вот пример того, как я использую его:

File backupDB = ...; 

//Uri uri = Uri.fromFile(backupDB); //From Android 7, this line results in a FileUriExposedException. Therefore, we must use MyFileProvider instead... 
Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".com.example.myapp.myfileprovider", backupDB); 

Intent newIntent = new Intent(Intent.ACTION_VIEW); 
newIntent.setDataAndType(uri, "application/x-sqlite3"); 
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
newIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

startActivity(newIntent); 

Для полноты, вот моя MyFileProvider.java класс:

package com.example.myapp; 

import android.support.v4.content.FileProvider; 

public class MyFileProvider extends FileProvider { 
} 

А вот как объявить его в :

<provider 
    android:name=".MyFileProvider" 
    android:authorities="${applicationId}.com.example.myapp.myfileprovider" 
    android:exported="false" 
    android:grantUriPermissions="true"> 
    <meta-data 
     android:name="android.support.FILE_PROVIDER_PATHS" 
     android:resource="@xml/my_file_provider_paths"/> 
</provider> 

И, наконец, вот мой my_file_provider_paths.xml:

<?xml version="1.0" encoding="utf-8"?> 
<paths> 
    <external-path name="external_files" path="."/> 
</paths> 
+0

его всегда открыты только папки, а не **. Db ** файл, пожалуйста, помогите. –

+0

Я только что отредактировал свой ответ с примером того, как я его использую. Надеюсь, это вам поможет. :-) –

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

  • Нет связанных вопросов^_^