我是新手android世界,我有一個關於保存設置的問題。我會試着用一個例子來解釋它。我們假設我們有一個類似於gmail的android應用程序,用戶在該應用程序中同步一個帳戶。登錄/密碼在哪裏存儲,以便即使關閉手機,他們仍然在那裏?它們是否存儲在數據庫中的SharedPreferences中,單獨的文件中?任何解釋將不勝感激。何處在android中保存數據
-1
A
回答
0
谷歌和其他這樣的公司使用會話來識別用戶。他們不會在您的手機中存儲密碼。首次登錄後,服務器將向用戶發出一個唯一的會話ID,應用可能會將其存儲在SharedPreferences中,然後,每個連續的服務器請求都必須發送此會話ID進行身份驗證。在你的情況下,你可以很好地存儲SharedPreferences中的任何設置,但不建議存儲密碼。如果您需要存儲大量數據,例如您正在創建具有各種功能的遊戲,則可以使用SQLite數據庫來存儲和檢索數據。
編輯: 首先,使用HttpUrlConnection發送用戶名和密碼到您的服務器。在此之後,我們需要從服務器響應頭中提取cookie。 下面的代碼演示瞭如何從服務器響應獲取的cookie:
String[] tokens;
List cookies = conn.getHeaderFields().get("Set-Cookie");
if (cookies != null) {
for (int i = 0; i < cookies.size(); i++) {
String cookieString = (String) cookies.get(i);
tokens = cookieString.split(";");
List<String> cookieHeaders = new ArrayList<>();
for (String str : tokens) {
if (str.contains("httponly")||str.contains("HttpOnly")) {
str = str.trim();
cookieHeaders.add(str);
} else {
Log.d("loginactivity","str "+str);
str = str.substring(0, str.indexOf("=")).trim();
cookieHeaders.add(str);
}
}
String token = cookieString;
}
}
您可以把令牌共享偏好:
sharedPreferences.edit().putString("token", token).apply();
在此之後,添加餅乾任何連續的請求到服務器。
String cookie = sharedPreferences.getString("token","");
httpConn.setRequestProperty("Cookie",cookie);
0
您可以保存SQLite數據庫上的數據。您的應用需要訪問文件系統權限。
我需要爲我的應用程序提供授權功能。我可以肯定地發送會話令牌給應用程序。你能否提供有關該主題的更多信息? – kDoyle