0

我试图用一个应用程序创建一个文件,并检查它是否存在于另一个应用程序中。我试图实现的是缓存中的全局文件,可以被设备上的任何应用程序访问。我读过这个:这个这个。但似乎我迷路了。每次我从另一个应用程序检查时,我都会创建新文件,第一个应用程序是否创建了一个文件。

private boolean doesFileExist() {
        File file = new File(this.getCacheDir().toString() + "myfile");
        if(file.exists()) {
            return true;
        }
        else return false;
    }

    private void createFileForMe() {
        File file = new File(this.getCacheDir().toString() + "myfile", "myfile");
        file.setReadable(true, false);
        Log.v("FILE", "created file");
    }

public void onCreate() {
        super.onCreate();
            if (!doesFileExist()) {
                Log.v("FILE", "FILE DOESnt EXIST");
                createFileForMe();
            } else Log.v("FILE", "FILE DOES EXIST");
    }
4

1 回答 1

0

Android JavadocgetCacheDir()说:

返回文件系统上应用程序特定缓存目录的绝对路径。

这意味着它仅适用于单个应用程序。相同的方法为您的第二个应用程序返回不同的位置。这些应用程序无法使用上述方法共享缓存。

您必须选择另一个位置来共享您的数据。请注意,大部分内部存储空间都受到限制。也许最好使用内置的外部存储(逻辑上是外部的,而不是 sdcard)。

更新

我看到 2 个选项:

  • 将数据存储在公共位置的外部存储中,您可以在此处阅读相关信息
  • 用于ContentProvider将内部存储上的私人数据共享给其他应用程序,您可以在此处阅读
于 2014-08-07T20:17:21.773 回答