5

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

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

我不喜欢将文档编辑器 word/excel 直接构建到应用程序中,除非那很容易?

编辑:

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

4

3 回答 3

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-

于 2014-11-24T08:11:39.997 回答
0

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

于 2012-06-28T09:09:20.630 回答
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",只有您签名的应用程序才能访问您的内容提供商,从而访问您的文件。

于 2012-06-28T09:10:16.400 回答