0
我開發了一個主應用程序,現在我需要開發第二個應用程序,它與第一個應用程序完全相同,但只能執行70%的功能。我已經模塊化了主應用程序的功能,但現在我希望能夠基於配置文件打開/關閉它們。此配置文件中的值需要在活動和服務的上下文中可訪問。很多人都建議使用SharedPrefences,但我不需要最終用戶來修改它。它僅供開發者配置這些設置。這是最好的方法是什麼?設置應用程序配置*不*用戶配置
我開發了一個主應用程序,現在我需要開發第二個應用程序,它與第一個應用程序完全相同,但只能執行70%的功能。我已經模塊化了主應用程序的功能,但現在我希望能夠基於配置文件打開/關閉它們。此配置文件中的值需要在活動和服務的上下文中可訪問。很多人都建議使用SharedPrefences,但我不需要最終用戶來修改它。它僅供開發者配置這些設置。這是最好的方法是什麼?設置應用程序配置*不*用戶配置
現在Android的數據可以存儲在these ways
現在你不想要存儲在共享偏好的配置,所以我建議你在2種方式 去創建一個SQLite數據庫,通過雙方的訪問應用程序或 創建存儲配置數據,並通過應用程序都可以訪問的文件
無論您選擇來存儲數據的方法使用一些加密算法,這樣
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}
private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(encrypted);
return decrypted;
}
它加密0
並調用它們像這樣:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); // bm is the bitmap object
byte[] b = baos.toByteArray();
byte[] keyStart = "this is a key".getBytes();
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(keyStart);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte[] key = skey.getEncoded();
// encrypt
byte[] encryptedData = encrypt(key,b);
// decrypt
byte[] decryptedData = decrypt(key,encryptedData);
現在你可以使用該密鑰來訪問這些值和用戶將不能夠理解你的配置信息
,或者您可以使用Web服務,以節省數據到服務器和你的兩個應用程序可以使用該Web服務來獲得配置,但它不會脫機工作:(
如果這是一個免費版本與付費版本,你可以把70%的免費應用程序和其餘30%的附加付費「升級密鑰」應用程序,並使用[簽名級權限](https://開發人員。 android.com/guide/topics/manifest/permission-element.html#plevel)和[共享UID](https://developer.android.com/guide/topics/manifest/manifest-element.html#uid)到將它們連接起來。許多應用都使用這種方法,例如[Nova Launcher](https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher)。 – Wyzard