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

时间:2015-09-21 03:29:07

标签: android android-permissions

我想让其他应用访问我应用的数据,我发现Google云端硬盘应用可以做到。 例如,我有app A,有一个文件位于/ data / data / Package A name / cache / 1.txt,我希望app 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);
    }

事实上,Google云端硬盘应用具有此功能,我从Google云端硬盘下载文件1.txt,它是/data/data/com.google.android.apps.docs/files/fileinternal/d36323c59e1519308c702675c4394e51/1.txt,它是Google Drive的私人数据,但是,我写了应用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);
    }

应用C可以访问它,似乎Google云端硬盘应用可以打开该文件的访问权限,因此其他应用可以访问。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您应该在应用程序之间阅读sending and receiving content,关于content providers并在此处返回更好的问题。

另见example

答案 1 :(得分:0)

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