2012-03-19 3 views
0

В настоящее время я могу загрузить файл из Интернета и сохранить на SD-карте, а затем использовать файл оттуда. Однако это делает файл (с проприетарными данными) доступным для просмотра. Я предпочел бы использовать файл откуда-то вроде raw или папки с ресурсами. я пропущу код загрузки, но мой код, чтобы использовать файл этогоИспользование файла, находящегося в папке raw или assets

File myFile = new File (android.os.Environment.getExternalStorageDirectory() + "/folder/filename.xml"); 
    Intent myIntent = new Intent(Intent.ACTION_VIEW); 
    myIntent.setData(Uri.fromFile(myFile)); 

Android открывает файл с приложением по умолчанию, и все хорошо.

Я нашел аналогичный Q/A о том, что вращаются вокруг использования кода, как

Uri.parse("android.resource://com.projectname.testing/raw/filename"); 

и

InputStream ins = getResources().openRawResource(R.raw.filename); 

, но я не могу работать, как получить любой из этих двух обратно в ' файл ', который будет использоваться с моим кодом .setData

Я хотел бы решить свою проблему, просто обратившись к файлу как к файлу. Однако, поскольку он используется внешним приложением, которое я прочитал, мне может потребоваться сделать временную копию файла с помощью mode_world_readable, а затем удалить его после закрытия приложения. Это звучит как большая часть дополнительной работы, тем более, что мой код выше работает для файла, хранящегося на SD-карте.

У кого-нибудь есть идеи? Thanks

ответ

0

Я бы предпочел использовать файл откуда-то вроде raw или папки с ресурсами.

Обратите внимание, что это тоже можно «увидеть».

, но я не могу работать, как получить любой из этих двух обратно в формат файла «», которые будут использоваться с моим .setData кодом

setData() не принимает File. Требуется Uri. Используйте Uri.parse(), чтобы разобраться с другими типами значений Uri. У вас уже есть этот код, показанный выше.

Однако, поскольку он используется внешним приложением, которое я прочитал, мне может потребоваться сделать временную копию файла с помощью mode_world_readable, а затем удалить его после закрытия приложения.

Это определенно необходимо для чтения во всем мире. Кроме того, не все приложения поддерживают все схемы, поэтому приложения, поддерживающие file:// или http://, могут не поддерживать android.resource://.

+0

Спасибо за ответ. Можете ли вы рассказать о том, как можно видеть файлы в папках с сырыми или активами? Я думал, что они были закодированы и упакованы в .apk, что потребовало бы взлома 'взлома' (таким образом, если бы кто-то должен был иметь мои личные данные, это доказывало бы «незаконную деятельность»). Кроме того, я пробовал всевозможные разные Параметры Uri.parse, но ничего не работает. Он работает только при передаче файла. – lifeIsGood

+0

@lifeIsGood: «Можете ли вы рассказать о том, как можно видеть файлы в папках с сырыми или активами?» - они доступны для чтения в других приложениях. – CommonsWare

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