我需要为我的android应用程序设置一些配置,比如服务器IP和端口,应用程序应该使用它们进行通信。我该如何添加?
我想过使用共享引用。在安装应用程序之前,我如何推送带有配置的共享引用文件。
第页。S.我不想在代码库中硬编码IP和PORT。
任何建议都会很有帮助。
感谢
这是不可能的。另一种选择是将应用程序附带一个json配置文件,并将其放在资产文件夹中
并读取文件的内容以预先填充所需的值。
try {
InputStream inputStream = mContext.getAssets().open(mContext.getPackageName() + ".json");
int size = inputStream.available();
byte[] buffer = new byte[size];
if (inputStream.read(buffer) != size) {
throw new IndexOutOfBoundsException();
}
inputStream.close();
JSONObject jsonObject = new JSONObject(new String(buffer, StandardCharsets.UTF_8));
server_ip = jsonObject.getString("server_ip");
server_port = jsonObject.getString("server_port");
} catch (Exception e) {
e.printStackTrace();
}
}
我个人会把代码放在一个扩展Application的类中,所以它只被调用一次。
在安装之前不能推送任何东西。但是,您可以在SharedPreferences中存储必要的数据,并随时进行检索。将字符串数据写入SharedPreferences或从SharedPreferences读取字符串数据;
private static final String SHARED_PREFS = "sharedPrefYourApp";
private static final String TEXT = "IP/PORT";
private static final String KEY = "IP_PORT_KEY";
public static void saveData(Context context) {
SharedPreferences sharedPreferences =
context.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(KEY, TEXT);
editor.apply();
}
public static String loadData(Context context) {
SharedPreferences sharedPreferences =
context.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
String text = sharedPreferences.getString(KEY, "");
return text;
}
另一种方法是使用类似Firebase Remote Config的东西,然后动态地为应用程序提供配置。将这种方法视为连接到静态位置的应用程序;安全地下载配置,然后对这些配置作出反应,并安全地连接到最终服务。
如果你想确保这一点的安全,我建议你使用Android钥匙链而不是SharedPreferences——我几乎不使用SharedPreferences(尽管这是一个首选项,或者取决于安全性和用例需求(。
这在Android中现在可以通过"托管配置";
https://developer.android.com/work/managed-configurations