首先,我需要一个如何在Android应用程序中存储私人设置的建议。此设置将包含应用程序登录REST API所需的server / login / password / clientId。将来可能会更改设置,因此我需要能够“轻松”在所有设备上更新它的解决方案 - 应用程序将用于+700客户端电话。手机没有SD卡。
我的概念是将此设置存储在散列文本文件中。我可以将准备好的设置文件发送到客户端,然后客户端通过USB将其复制到设备存储器到给定位置 - 主存储器中的新文件夹,其中包括Alarms,DCIM等。
这是一个很好的解决方案吗?
检查存储的示例方法 - 在我的测试手机上都返回false:
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}
如何在android外部存储器(不是SD卡)中保存文件?
答案 0 :(得分:0)
这里有很棒的文档: https://developer.android.com/training/basics/data-storage/files.html
请阅读它以了解外部存储并不意味着Android的SD卡。即使没有SD卡的手机也会有外部存储
您的清单中需要此权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(对我来说,阅读许可也有效......)
然后,对于较新的Android版本,您需要请求权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PackageManager.PERMISSION_GRANTED != this.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_RIGHT_REQUEST_CODE);
}
}
然后我使用getExternalFilesDir来获取我的应用程序目录来存储一些文件。 https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)
但是由于你不想要可移动存储,你最好使用getFilesDir https://developer.android.com/reference/android/content/Context.html#getFilesDir()
PS:我刚注意到该文档说自KitKat以来你不需要任何访问应用程序目录的权限。稍后可以看一下......