Android共享内部存储

时间:2012-06-28 09:02:45

标签: android storage shared internal

在任何基于Android的设备上都有共享内部存储吗?我知道您可以将SDCard用作应用程序之间的共享文件位置,但对于我正在处理的项目,我们不希望丢失SD卡的能力(敏感材料)。

问题如下。 App1允许用户浏览(例如)某些word文档并将其下载到建议的共享存储,然后用户可以将此文件传递给Documents 2 Go编辑它们并保存更改。然后,App 1允许上传更改的文件。

我不想将文档编辑器word / excel直接构建到app中,除非那很容易吗?

编辑:

第二个应用是“Documents 2 Go”我将无法编辑其AndroidManifest

3 个答案:

答案 0 :(得分:1)

我现在面对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:其他用户的读/写权限可能不会反映在文件中 系统。有时我在adb shell中看不到rw-rw-rw-

答案 1 :(得分:0)

我相信ContentProviders是您的解决方案。它是Android推荐的在不同应用程序之间共享应用程序数据的方法。

答案 2 :(得分:0)

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”,只有您签名的应用才能访问您的内容提供商,从而访问您的文件。