安卓共享内部存储

5
在任何基于Android的设备上是否存在共享内部存储空间?我知道你可以使用SD卡作为应用程序之间的共享文件位置,但是对于我正在开展的项目,我们不希望SD卡丢失(敏感材料)的可能性。
问题如下。App1允许用户浏览(例如)一些Word文档并将它们下载到拟议的共享存储中,然后用户可以将此文件传递给Documents 2 Go进行编辑并保存更改。然后,App1允许上传更改后的文件。
我不想直接在应用程序中构建文档编辑器(例如Word/Excel),除非那很容易?
编辑:
第二个应用程序是“Documents 2 Go”,我将无法编辑其AndroidManifest。

可以尝试使用内容提供者。 - Dheeresh Singh
我也尝试了 fos = openFileOutput("test4.doc", Context.MODE_WORLD_READABLE); 这个方法,它允许文件被读取但不能保存。MODE_WORLD_WRITEABLE 会让 Docs2go 无法读取该文件 :( - Andy Davies
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-。

0

https://dev59.com/oVLTa4cB1Zd3GeqPZEux#6708681

在应用程序之间共享数据是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",只有由您签名的应用程序可以访问您的内容提供者和您的文件。


我将无法在两个应用程序中访问清单,只能在我们的应用程序中访问。 - Andy Davies

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接