2012-04-18 38 views
21

tôi đang tạo thông tin đăng nhập trong ứng dụng của mình. Người dùng gõ thông tin của mình tôi gửi nó đến dịch vụ web để kiểm tra và nhận được ID của mình. Bây giờ tôi cần phải lưu nó ở đâu đó trong ứng dụng của tôi mà tôi có thể kiểm tra nếu anh ta đã đăng nhập.Lưu thông tin người dùng trong cài đặt ứng dụng

Vì vậy, nơi lưu thông tin này? Tôi biết rằng mọi ứng dụng đều có cài đặt của nó nên có thông tin này? Có lẽ ai đó có thể cho tôi biết thêm thông tin về cách thức và cách thức hoạt động của nó.

Cảm ơn.

tôi tìm thấy bài đăng này: What is the most appropriate way to store user settings in Android application

Tôi tin rằng câu hỏi của tôi là trùng lặp. Nhưng sẽ tốt hơn nếu bạn có thứ gì đó để chia sẻ nhiều hơn.

Trả lời

54

Trước hết tiết kiệm sử dụng thông tin như uname & mật khẩu trong SharedPreferences với mã này.

SharedPreferences settings = getSharedPreferences("UserInfo", 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("Username",txtUname.getText().toString()); 
editor.putString("Password",txtPWD.getText().toString()); 
editor.commit(); 

và sau đó nhận được SharedPreferences từ bên dưới đang

SharedPreferences settings = getSharedPreferences("UserInfo", 0); 
txtUname.setText(settings.getString("Username", "").toString()); 
txtPWD.setText(settings.getString("Password", "").toString()); 
+1

Đối với bất cứ ai tự hỏi về compatiility, điều này được hỗ trợ trong tất cả các phiên bản API hiện tại (Được thêm vào trong API V1). Bạn có thể tìm thấy tài liệu SharedPreferences tại đây: http://developer.android.com/reference/android/content/SharedPreferences.html – JakeJ

+10

Đối với bất kỳ ai thắc mắc về bảo mật, đừng lưu trữ mật khẩu của người dùng trong SharedPreferences. –

+5

Bạn KHÔNG BAO GIỜ nên lưu mật khẩu đơn giản trong các ứng dụng hoặc cơ sở dữ liệu. Thay vì lưu văn bản thuần túy, bạn có thể băm nó. Khi bạn cần phải xác nhận userwordword đã cho, bạn có thể băm nó theo cùng một cách và so sánh các băm. Cách này tốt hơn nhiều so với văn bản thuần túy. – RoDo

7

Bạn có thể sử dụng SharedPreferences cho việc này.

Một số mã từ tài liệu tham khảo (taken from documentation):

public class Calc extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    @Override 
    protected void onCreate(Bundle state){ 
     super.onCreate(state); 
     . . . 

     // Restore preferences 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     boolean silent = settings.getBoolean("silentMode", false); 
     setSilent(silent); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 

     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("silentMode", mSilentMode); 

     // Commit the edits! 
     editor.commit(); 
    } 
} 
22

trả lời là Sử dụng Lớp ứng dụng hoặc Preferences Shared

Tôi giả sử bạn có thể dễ dàng tìm kiếm các Ví dụ về Application Class, SharedPreferencesSQLite Database

Vì vậy, tôi đang đề cập đến ở đâu để tôi sử dụng các tuỳ chọn

Application Class

Khi tôi bất cứ điều gì (var, mảng, danh sách, các đối tượng) để lưu trữ chỉ duy nhất cho tuổi thọ của các Application..and Như nó đã gần (dành cho Android Buộc Đóng) Tôi sử dụng Lớp Ứng dụng.

SharedPreferences

tôi sử dụng này khi tôi có một số thông tin ngắn như id, token, tên người dùng, cờ và tôi muốn để lưu trữ rằng miễn là phần còn lại ứng dụng trong Device..and cần phải sử dụng những thông tin mọi tôi bắt đầu ứng dụng ..

SQLite Database

Khi có một số lượng lớn dữ liệu trong Record định dạng (Row - Cột) tôi sử dụng nó để lưu trữ trong cơ sở dữ liệu để nó trở nên dễ dàng để lưu trữ, truy xuất và thao tác.

0

nếu người dùng xóa dữ liệu ứng dụng từ thiết -> quản lý ứng dụng -> ứng dụng của bạn -> Xóa dữ liệu rõ ràng

thì tất cả dữ liệu được lưu trong tùy chọn chia sẻ sẽ bị xóa bỏ

+1

Oh thật sao? Wow cảm ơn vì đã chỉ ra điều đó. Tôi tự hỏi liệu điều này có đúng với cơ sở dữ liệu SQLite không quá – MobileMon

+2

Yep xác nhận của nó, cơ sở dữ liệu cũng bị xóa. Hộp thoại xác nhận cho tôi biết tất cả "Tệp, cài đặt, tài khoản, cơ sở dữ liệu, v.v ..." sẽ bị xóa vĩnh viễn. Học điều mới mỗi ngày... – MobileMon

Các vấn đề liên quan