登录后,保留在home_screen中直到注销

时间:2014-06-30 11:24:05

标签: java android

我想将用户名和密码发送到服务器,并返回用户名和密码是否匹配的响应。每次我的应用程序启动时,我都不想要求登录,而是希望保留在home_screen,直到我从我的Android应用程序注销。我怎样才能做到这一点?任何一个例子都会谢天谢地。

package com.example.test5;

import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements OnClickListener{
    private EditText username;
    private EditText  password;
    private Button login;
    static String u;
    static String p;    
    Context context = MainActivity.this;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        username = (EditText)findViewById(R.id.editText1);//Visibility
        password = (EditText)findViewById(R.id.editText2);//Visibility
        login = (Button)findViewById(R.id.button1);//Visibility

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                u = username.getText().toString();
                p = password.getText().toString();
                Toast.makeText(MainActivity.this, "Checking User Login",Toast.LENGTH_SHORT).show();
                new MyAsyncTask_Login(context).execute(u,p);
            }
        });
    }

    @Override
    public void onClick(DialogInterface dialog, int which) {
    }
}

我的asynctask类

package com.example.test5;

import java.io.StringReader;
import java.util.LinkedList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.XmlResourceParser;
import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.widget.Toast;

public class MyAsyncTask_Login extends AsyncTask<String, Void, String>{
    public static final String MyPREFERENCES = "MyPrefs" ; //editor: never used
    public static final String userName = "name"; 
    public static final String Password = "password"; 
    SharedPreferences sharedpreferences; //editor: never used
    private Context context;

    public MyAsyncTask_Login(Context context) {
        this.context = context;
    }                   

    @Override
    protected String doInBackground(String... params) {
        String response = new Login_WebService().checkLogin(params[0], params[1]);
        return response;
    }

    @Override
    protected void onPostExecute(String result) {
        String strResponse = result;
        try {
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            XmlPullParser parser = factory.newPullParser();
            parser.setInput(new StringReader(strResponse));
            List<String> tags = new LinkedList<String>();
            tags.add("valid");
            for (int type = parser.next(); type != XmlResourceParser.END_DOCUMENT; type = parser.next()) {
                if (type == XmlResourceParser.START_TAG) {
                    String name = parser.getName();
                    if (tags.contains(name)) {
                        type = parser.next();
                        if (parser.getText().trim().equals("1")) {
                            Toast.makeText(context, "logged in succesfully.",Toast.LENGTH_SHORT).show();
                            try {
                                String user = MainActivity.u;
                                String pass = MainActivity.p;
                                Intent i = new Intent(context,Home_page.class);
                                context.startActivity(i);
                            }
                            catch (Exception e) {
                                Toast.makeText(context, e.toString(),Toast.LENGTH_SHORT).show();    
                            }
                        }
                        else {
                            Toast.makeText(context, "Invalid User",Toast.LENGTH_SHORT).show();
                        }
                    }
                }
            }
        }
        catch (Exception e) {
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你可以这样做:

将您的登录数据保存在共享首选项中。

当用户登录时:

protected void doInBackground(Activity... params) {
    Activity activity = (Activity) params[0];
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);//Pass activity in params o
    Editor editor = prefs.edit();
    editor.putString("username",u);
    editor.putString("password",p);
    editor.commit();
}

在创建时,当用户重新启动应用时,请阅读共享首选项:

u = prefs.getString("username", ""); 
p = prefs.getString("password", ""); 

if(u.equals("") || p.equals(""))
    //user needs new login  
else
    //user already login

要退出&#34;&#34;在共享偏好中。