java - Android登录应用程序未登录用户

标签 java android xml

我正在尝试开发一个带有登录和注册的聊天应用程序。该应用程序运行正常,当我注册时,它会在 SQLite 中添加正确的信息,但是当我使用这些详细信息登录时,该应用程序会显示“正在登录”,但没有任何反应。有谁知道我的代码有什么问题吗?

登录 Activity .java

public class LoginActivity extends Activity {
// LogCat tag
private static final String TAG = RegisterActivity.class.getSimpleName();
private Button btnLogin;
private Button btnLinkToRegister;
private EditText inputEmail;
private EditText inputPassword;
private ProgressDialog pDialog;
private SessionManager session;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    inputEmail = (EditText) findViewById(R.id.email);
    inputPassword = (EditText) findViewById(R.id.password);
    btnLogin = (Button) findViewById(R.id.btnLogin);
    btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen);

    // Progress dialog
    pDialog = new ProgressDialog(this);
    pDialog.setCancelable(false);

    // Session manager
    session = new SessionManager(getApplicationContext());

    // Check if user is already logged in or not
    if (session.isLoggedIn()) {
        // User is already logged in. Take him to main activity
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
    }

    // Login button Click Event
    btnLogin.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            String email = inputEmail.getText().toString();
            String password = inputPassword.getText().toString();

            // Check for empty data in the form
            if (email.trim().length() > 0 && password.trim().length() > 0) {
                // login user
                checkLogin(email, password);
            } else {
                // Prompt user to enter credentials
                Toast.makeText(getApplicationContext(),
                        "Please enter the credentials!", Toast.LENGTH_LONG)
                        .show();
            }
        }

    });

    // Link to Register Screen
    btnLinkToRegister.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Intent i = new Intent(getApplicationContext(),
                    RegisterActivity.class);
            startActivity(i);
            finish();
        }
    });

}

/**
 * function to verify login details in mysql db
 * */
private void checkLogin(final String email, final String password) {
    // Tag used to cancel the request
    String tag_string_req = "req_login";

    pDialog.setMessage("Logging in ...");
    showDialog();

    StringRequest strReq = new StringRequest(Method.POST,
            AppConfig.URL_REGISTER, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, "Login Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
                boolean error = jObj.getBoolean("error");

                // Check for error node in json
                if (!error) {
                    // user successfully logged in
                    // Create login session
                    session.setLogin(true);

                    // Launch main activity
                    Intent intent = new Intent(LoginActivity.this,
                            MainActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    // Error in login. Get the error message
                    String errorMsg = jObj.getString("error_msg");
                    Toast.makeText(getApplicationContext(),
                            errorMsg, Toast.LENGTH_LONG).show();
                }
            } catch (JSONException e) {
                // JSON error
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Login Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();
            hideDialog();
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting parameters to login url
            Map<String, String> params = new HashMap<String, String>();
            params.put("tag", "login");
            params.put("email", email);
            params.put("password", password);

            return params;
        }

    };

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}

private void showDialog() {
    if (!pDialog.isShowing())
        pDialog.show();
}

private void hideDialog() {
    if (pDialog.isShowing())
        pDialog.dismiss();
}
}

主 Activity .java

public class MainActivity extends Activity
{
private TextView txtName;
private TextView txtEmail;
private Button btnLogout;
private SQLiteHandler db;
private SessionManager session;
public Socket sender;
public BufferedReader br;
public PrintStream bw;

class SocketListener implements Runnable
{
    String str;

    public void run()
    {
        try
        {
            sender = new Socket("127.0.0.1", 1234);
            br = new BufferedReader (new InputStreamReader(sender.getInputStream()));
            bw = new PrintStream (sender.getOutputStream());
            bw.println("Connected");

            while (true)
            {
                final TextView t = (TextView)findViewById(R.id.textView);

                String s =  br.readLine ();
                CharSequence cs = t.getText ();
                str = cs + "\r\n" +  s;
                Log.i("Chat-str:", str);
                t.post(new Runnable()
                       {
                           public void run()
                           {
                               t.setText(str);
                           }
                       }
                );
            }
        }
        catch (IOException e)
        {
            Log.e(getClass().getName(), e.getMessage());
        }
    }
}

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

    txtName = (TextView) findViewById(R.id.name);
    txtEmail = (TextView) findViewById(R.id.email);
    btnLogout = (Button) findViewById(R.id.btnLogout);

    // SqLite database handler
    db = new SQLiteHandler(getApplicationContext());

    // session manager
    session = new SessionManager(getApplicationContext());

    if (!session.isLoggedIn()) {
        logoutUser();
    }

    // Fetching user details from sqlite
    HashMap<String, String> user = db.getUserDetails();

    String name = user.get("name");
    String email = user.get("email");

    // Displaying the user details on the screen
    txtName.setText(name);
    txtEmail.setText(email);

    // Logout button click event
    btnLogout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            logoutUser();
        }
    });

    TextView tv = (TextView)findViewById(R.id.textView);
    tv.setMovementMethod(new ScrollingMovementMethod());

    Button send1 = (Button)findViewById(R.id.button);
    send1.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            final EditText et = (EditText)findViewById(R.id.editText);
            Editable e = et.getText();
            final String s = e.toString();

            new Thread ()
            {
                public void run ()
                {
                    bw.println (s);
                }
            }.start();
        }
    });

    Thread t = new Thread (new SocketListener ());
    t.start();
}

/**
 * Logging out the user. Will set isLoggedIn flag to false in shared
 * preferences Clears the user data from sqlite users table
 * */
private void logoutUser() {
    session.setLogin(false);

    db.deleteUsers();

    // Launching the login activity
    Intent intent = new Intent(MainActivity.this, LoginActivity.class);
    startActivity(intent);
    finish();
}
}

最佳答案

看起来你从来没有登录过他们。看这里

btnLogin.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {
        String email = inputEmail.getText().toString();
        String password = inputPassword.getText().toString();

        // Check for empty data in the form
        if (email.trim().length() > 0 && password.trim().length() > 0) {
            // login user
            checkLogin(email, password);
        } else {
            // Prompt user to enter credentials
            Toast.makeText(getApplicationContext(),
                    "Please enter the credentials!", Toast.LENGTH_LONG)
                    .show();
        }
    }

});

什么是 checkLogin(email, password); 如果它返回一个 boolean 值,你应该说
如果(检查登录){
//登录
}

你能发布检查登录代码吗?

关于java - Android登录应用程序未登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856684/

相关文章:

android - Cordova 8,Android 7.1.0,无法安装任何插件

xml - XSL 根据属性对元素进行排序,特定元素除外

Java 对象数组相互链接

java - 错误 : not a statement Else(

Android MVP,如何协调多个 View ?

android - 从 AlarmManager (Android) 触发警报对话框

java - Android - 当应用程序被终止并重新启动时首选项不保存?

.net - 以编程方式以缩进形式格式化 XML,就像 Visual Studio 的自动格式化一样

java - 尝试创建一个简单的加密程序

java - 在 exec() 中处理\n 和\t - Java