Общая внутренняя память Android

Есть ли такая вещь на любом устройстве на базе Android, как общее внутреннее хранилище? Я знаю, что вы можете использовать SD-карту в качестве общего хранилища файлов между приложениями, но для проекта, над которым я работаю, мы не хотим, чтобы SD-карта пропадала (конфиденциальный материал).

Проблема заключается в следующем. App1 позволяет пользователю просматривать (например) некоторые текстовые документы и загружать их в предложенное общее хранилище, затем пользователь может передать этот файл в Documents 2 Go, отредактировав их и сохранив изменения. Затем приложение 1 разрешает загрузку измененного файла.

Я не хочу встраивать редактор документов word/excel прямо в приложение, если только это не просто?

РЕДАКТИРОВАТЬ:

Второе приложение — «Документы 2 Go». Я не смогу редактировать его AndroidManifest.


person Andy Davies    schedule 28.06.2012    source источник
comment
может попробовать контент провайдер   -  person Dheeresh Singh    schedule 28.06.2012
comment
я тоже пробовал - fos = openFileOutput(test4.doc, Context.MODE_WORLD_READABLE); который позволяет читать файл, но не сохранять. MODE_WORLD_WRITEABLE не позволяет docs2go читать файл :(   -  person Andy Davies    schedule 28.06.2012


Ответы (3)


Я столкнулся с аналогичной ситуацией сейчас для файлов txt и сделал это.

File downloadedFile= new File( context.getFilesDir(), "simple.txt" );
downloadedFile.setReadable( true, false );
downloadedFile.setWritable( true, false ); //set read/write for others
Uri downloadFileUri = Uri.fromFile( downloadedFile );
Intent intentToEditFile = new Intent( Intent.ACTION_EDIT );
intentToEditFile.setDataAndType( downloadFileUri, "text/plain" );
context.startActivity( intentToEditFile );

Теперь редактор Document 2 Go будет запущен для редактирования файла и сможет редактировать simple.txt.

Примечание 1. Uri следует создавать из того же файлового объекта, который был задан с помощью setReadable()/setWritable.
Примечание 2. Разрешение на чтение и запись для других пользователей может не отражаться в файловой системе. Иногда я не вижу rw-rw-rw- в оболочке adb

person kiranpradeep    schedule 24.11.2014

Я считаю, что ContentProviders — это ваше решение. Это рекомендуемый Android метод для обмена данными приложения между разными приложениями.

person Angelo    schedule 28.06.2012

https://stackoverflow.com/a/6708681/804447

Обмен данными между приложениями — это то, для чего нужны ContentProviders. Предполагая, что вы знаете, как написать ContentProvider и получить к нему доступ, вы можете получить доступ к файлам через ParcelFileDescriptor, который включает константы для режима, в котором вы создаете файлы.

Теперь вам нужно ограничить доступ, чтобы не все могли читать файлы через поставщика контента, и вы делаете это с помощью разрешений Android. В манифесте одного из ваших приложений, в котором будут размещаться файлы и контент-провайдер, напишите что-то вроде этого:

<permission android:name="com.example.android.provider.ACCESS" android:protectionLevel="signature"/>

и в обоих приложениях добавьте это:

<uses-permission android:name="com.example.android.provider.ACCESS" /> 

с помощью protectionLevel="signature" только приложения, подписанные вами, могут получить доступ к вашему контент-провайдеру и, следовательно, к вашим файлам.

person Dheeresh Singh    schedule 28.06.2012
comment
У меня не будет доступа к манифесту в обоих приложениях, только в нашем приложении - person Andy Davies; 28.06.2012