我是Android開發的初學者,我的應用程序要求用戶在LoginActivity
中輸入他們的電子郵件和密碼才能登錄。如果憑證沒問題,那麼應用程序應該啓動WorkActivity
。如何僅在滿足條件時開始活動
這是PHP腳本。對於測試,我只是將$email
和$password
設置爲靜態值,而不是從數據庫中抓取它們。
<?php
$response = array ("success"=> 0, "responseMessage"=> "Incorrect email/password combination");
$email = "mwangicj";
$password = "asd";
if($_SERVER['REQUEST_METHOD']=='POST'){
\t $request = json_decode(file_get_contents('php://input'));
\t if(!strcmp($email,$request->email)&& !strcmp($password,$request->password)){
\t \t $response['success'] = 1;
\t \t $response['responseMessage'] = "Login successful ".$request->email;
\t }
}
echo json_encode($response);
?>
我使用凌空庫來發送和接收數據,並從PHP。這裏是LoginActivity
package com.mwangicj.Lugayocontributor;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class LoginActivity extends AppCompatActivity {
EditText loginEmail, loginPassword;
TextView message;
Button loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginEmail = (EditText) findViewById(R.id.loginEmail);
loginPassword = (EditText) findViewById(R.id.loginPassword);
loginButton = (Button) findViewById(R.id.loginButton);
message = (TextView) findViewById(R.id.message);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (connected()){
message.setText("");
String email = loginEmail.getText().toString();
String password = loginPassword.getText().toString();
if (!email.isEmpty() && !password.isEmpty()){ //Check if fields are filled in
logInUser();
}else{
Toast.makeText(getApplicationContext(), "Supply both email and password!",Toast.LENGTH_LONG).show();
}
}else{
Toast.makeText(getApplicationContext(), "No internet", Toast.LENGTH_SHORT).show();
}
}
});
}
//executing user's login request
private void logInUser() {
postJsonRequest("http://10.0.2.2:1234/app/json.php");
}
//Starting work activity
void goToWork(){
Intent i = new Intent(getApplicationContext(), WorkActivity.class);
startActivity(i);
finish();
}
//preparing user's login details
private void postJsonRequest(String url) {
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
JSONObject params = new JSONObject();
try {
params.put("email", loginEmail.getText().toString());
params.put("password", loginPassword.getText().toString());
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.POST, url, params, new Response.Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response) {
try {
String success = response.getString("success");
String responseMessage = response.getString("responseMessage");
if (success == "0"){
message.setText(responseMessage);
}else{
Toast.makeText(getApplicationContext(), responseMessage, Toast.LENGTH_LONG).show();
goToWork();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
message.setText("Error: " + error.toString());
}
});
queue.add(jsonObjectRequest);
}
//Checking internet connection
boolean connected(){
ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo nInfo = cManager.getActiveNetworkInfo();
if(nInfo!=null && nInfo.isConnected()){
return true;
}else{
return false;
}
}
}
的問題是,無論正確或不正確的電子郵件和密碼組合的WorkActivity開始。
我該如何解決這個問題?
您是否試過在調試器中逐步執行代碼? – rrirower