如何让其他应用程序访问我的应用程序的数据,例如 Google 云端硬盘应用程序

How to let other app access my app's data like Google Drive app do

我想让其他应用访问我应用的数据,我发现 Google Drive 应用可以做到。 例如,我有应用程序 A,有一个文件位于 /data/data/Package A name/cache/1.txt,我希望应用程序 B 可以访问它,

    try
    {
        FileInputStream fin = new FileInputStream("/data/data/Package A name/cache/1.txt");
        Integer i = fin.available();
        Log.w("test", i.toString());
    }
    catch (Exception e)
    {
        Log.w("test", e);
    }

其实GoogleDrive app有这个功能,我从GoogleDrive下载文件1.txt,是/data/data/com.google.android.apps.docs/files/fileinternal/d36323c59e1519308c702675c4394e51/1.txt,是Google驱动私有数据,然而,我写app C,代码是这样的

    try
    {
        FileInputStream fin = new FileInputStream("/data/data/com.google.android.apps.docs/files/fileinternal/d36323c59e1519308c702675c4394e51/1.txt");
        Integer i = fin.available();
        Log.w("test", i.toString());
    }
    catch (Exception e)
    {
        Log.w("test", e);
    }

app C可以访问,好像GoogleDrive app打开了文件的访问权限,所以其他app可以访问。提前致谢。

您应该阅读有关 sending and receiving content between applications, about content providers 和 return 的内容并提出更好的问题。

还有这个example

Context.openFileOutput 可以用 MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 创建文件,其他应用程序可以访问它,它位于 /data/data/Package name/files 文件夹中,即 Google Drive do,顺便说一句,Android 不建议使用这些常量,此常量在 API 级别 17 中已弃用,您应该使用更正式的交互机制,例如 ContentProvider、BroadcastReceiver、和服务。