所以我想将数据写入用户可以手动访问的位置的文件中。目标是提供一个易于访问的崩溃日志,我可以发送,而无需人们完成整个logcat。
我知道可以通过我的应用程序写入的内部存储文件系统上的一个位置是/storage/emulated/0/Android/data/my.app.package/files
。然而,我的目标是让这条路径尽可能与平台无关。
我可以使用/storage/emulated/0
获取Environment.getExternalStorageDirectory()
部分。这是我关注的Android / data / my.app.package / files部分。我想避免硬编码路径以避免设备之间的差异。
那么有没有可以帮助我的实用方法?我已经尝试了Context.getFilesDir()
,但这只是给了我/data/user/0/my.app.package
,没有root的用户无法访问它。
答案 0 :(得分:2)
getExternalFilesDir
是你想要使用的
https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)
答案 1 :(得分:1)
我主要使用的写作函数是
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" />