簡體   English   中英

如何在 android 和 JSON 中使用共享首選項來保持用戶登錄?

[英]How to use shared preferences in android with JSON to keep a user logged in?

我有一個應用程序,每次退出時,我都被要求重新登錄。 我希望我的應用程序讓用戶保持登錄狀態。我不知道從哪里開始。 我有點新使用 android 中的 JSON 的共享偏好。如果你們中的任何人可以幫助我,請告訴我。 學校項目急需它。 謝謝

這是我的 sign_in.java:

public class sign_in extends AppCompatActivity {

    private EditText  username,password;
    private Button btnSignIn;
    private RequestQueue requestQueue;
    private static final String URL = "http://192.168.1.2:80/OrgSpace/API/user_control.php";
    private StringRequest request;




    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_in);

        username = (EditText) findViewById(R.id.username);
        password = (EditText) findViewById(R.id.password);
        btnSignIn = (Button) findViewById(R.id.btnSignIn);



        requestQueue = Volley.newRequestQueue(this);

        btnSignIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            if(jsonObject.names().get(0).equals("success")){
                                Toast.makeText(getApplicationContext(),"SUCCESS "+jsonObject.getString("success"),Toast.LENGTH_SHORT).show();
                                startActivity(new Intent(getApplicationContext(),menu.class));
                            }else {
                                Toast.makeText(getApplicationContext(), "Error" +jsonObject.getString("error"), Toast.LENGTH_SHORT).show();
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                }){
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        HashMap<String,String> hashMap = new HashMap<String, String>();
                        hashMap.put("username",username.getText().toString());
                        hashMap.put("password",password.getText().toString());

                        return hashMap;
                    }
                };

                requestQueue.add(request);
            }
        });
    }
} 

這是我的啟動畫面:

  public class MainActivity extends AppCompatActivity {
            Handler h = new Handler();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            h.postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent i = new Intent(MainActivity.this, starting_page.class);
                    startActivity(i);
                    finish();
                }
            }, 5000);
        }
    
    
    }

這是他們在 starting_page.java 啟動畫面后看到的: 看看這張照片

public class starting_page extends AppCompatActivity {

    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_starting_page);

        textView=findViewById(R.id.register);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i1 = new Intent (starting_page.this, registration.class);
                startActivity(i1);
        }
        });

    }
    public void signin(View view) {
        Intent intent=new Intent(starting_page.this, sign_in.class);
        startActivity(intent);
    }

    public void btnContinue(View view) {
        Intent intent=new Intent(starting_page.this, menu.class);
        startActivity(intent);
    }



}

這就是您可以在共享首選項中設置值的方法。

SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(activity /* Activity context */);
SharedPreferences.Editor myEdit = sharedPreferences.edit();
myEdit.putString("preferenceName", "preferenceValue");
// Once the changes have been made,
// we need to commit to apply those changes made,
// otherwise, it will throw an error
myEdit.commit();

這就是您如何從共享偏好中獲取存儲值的方法。

SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(activity /* Activity context */);
String name = sharedPreferences.getString("preferenceKey", "defaultValue");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM