Android:如何写入Android/data/app.path/files目录

Android: How to write to the Android/data/app.path/files directory

所以我想将数据写入一个用户可以手动访问的位置的文件。目标是提供一个易于访问的崩溃日志,我可以发送该日志,而无需人们做完整的 logcat.

据我所知,我的应用程序可以写入内部存储文件系统的一个位置是 /storage/emulated/0/Android/data/my.app.package/files。然而,我的目标是让这条路径尽可能独立于平台。

我可以使用 Environment.getExternalStorageDirectory() 得到 /storage/emulated/0 部分。我关心的是 Android/data/my.app.package/files 部分。我想避免硬编码路径以避免设备之间的差异。

那么有什么实用方法可以帮助我吗?我试过 Context.getFilesDir(),但这只是给了我 /data/user/0/my.app.package,没有 root 的用户无法访问它。

我主要使用的写作功能是

public static void writeStringAsFile(Context context, String fileContents, String fileName) {
    try {
        FileWriter out = new FileWriter(new File(Environment.getExternalStorageDirectory() + fileName));
        out.write(fileContents);
        out.close();
    } catch (IOException e) {
    }
}

并且包的路径如

String basePath = Environment.getExternalStorageDirectory().toString() + "/Android/data/" +
            getPackageName().toString();

根据需要修改或组合它们。 PS:不要忘记许可:)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

getExternalFilesDir就是你要用的 https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)