我的Android应用无法登录或注册

时间:2014-05-31 07:55:22

标签: java android json login user-registration

我正在制作一个Android应用程序,用户必须登录(如果他们之前已经注册过)或者他们还没有必须先注册。当我在login.xml上点击Login按钮时,它会显示错误消息"不正确的电子邮件或密码"我甚至很难确定我使用了正确的电子邮件和密码。如果我去register.xml并单击注册按钮,它会显示"注册时出现错误"。

我正在检查它进入logcat但只显示:

  

05-31 07:24:46.753:E / Trace(758):错误打开跟踪文件:没有这样的文件或目录(2)   05-31 07:24:48.793:D / dalvikvm(758):GC_CONCURRENT释放68K,8%免费2801K / 3012K,暂停12ms + 43ms,总计321ms   05-31 07:24:50.233:I / Choreographer(758):跳过124帧!应用程序可能在其主线程上做了太多工作。   05-31 07:24:50.283:D / gralloc_goldfish(758):未检测到GPU仿真的仿真器。   05-31 07:30:30.783:I / Choreographer(758):跳过87帧!应用程序可能在其主线程上做了太多工作。   05-31 07:30:33.522:D / Button(758):登录   05-31 07:30:33.982:E / JSON(758):{" tag":" login"," success":0,"错误":1," error_msg":"电子邮件或密码不正确!"} n   05-31 07:36:40.085:E / JSON(758):{" tag":"注册","成功":0,"错误":1," error_msg":"在注册中发生错误"} n

是什么原因造成的?请帮我解决这个问题。我是我的任务。

这是我的json

package com.stmik.slidingmenu.library;
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.List;   
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; import org.json.JSONObject;   
import android.util.Log;

 public class JSONParser {

    static InputStream is = null;
     static JSONObject jObj = null;
     static String json = "";

     // constructor
     public JSONParser() {

     }

     public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) {

         // Making HTTP request
         try {
             // defaultHttpClient
             DefaultHttpClient httpClient = new DefaultHttpClient();
             HttpPost httpPost = new HttpPost(url);
             httpPost.setEntity(new UrlEncodedFormEntity(params));

             HttpResponse httpResponse = httpClient.execute(httpPost);
             HttpEntity httpEntity = httpResponse.getEntity();
             is = httpEntity.getContent();

         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         } catch (ClientProtocolException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }

         try {
             BufferedReader reader = new BufferedReader(new InputStreamReader(
                     is, "iso-8859-1"), 8);
             StringBuilder sb = new StringBuilder();
             String line = null;
             while ((line = reader.readLine()) != null) {
                 sb.append(line + "n");
             }
             is.close();
             json = sb.toString();
             Log.e("JSON", json);
         } catch (Exception e) {
             Log.e("Buffer Error", "Error converting result " + e.toString());
         }

         // try parse the string to a JSON object
         try {
             jObj = new JSONObject(json);            
         } catch (JSONException e) {
             Log.e("JSON Parser", "Error parsing data " + e.toString());
         }

         // return JSON String
         return jObj;

     } }

这是UserFunction.java

    package com.stmik.slidingmenu.library;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import android.content.Context;

public class UserFunctions {

    private JSONParser jsonParser;

    // Testing in localhost using wamp or xampp 
    // use http://10.0.2.2/ to connect to your localhost ie http://localhost/
    private static String loginURL = "http://192.168.1.165/sales_app/";
    private static String registerURL = "http://192.168.1.165/sales_app/";

    private static String login_tag = "login";
    private static String register_tag = "register";

    // constructor
    public UserFunctions(){
        jsonParser = new JSONParser();
    }

    /**
     * function make Login Request
     * @param email
     * @param password
     * */
    public JSONObject loginUser(String email, String password){
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("tag", login_tag));
        params.add(new BasicNameValuePair("email", email));
        params.add(new BasicNameValuePair("password", password));
        JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
        // return json
        // Log.e("JSON", json.toString());
        return json;
    }

    /**
     * function make Login Request
     * @param name
     * @param email
     * @param password
     * */
    public JSONObject registerUser(String nama, String email, String password){
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("tag", register_tag));
        params.add(new BasicNameValuePair("nama", nama));
        params.add(new BasicNameValuePair("email", email));
        params.add(new BasicNameValuePair("password", password));

        // getting JSON Object
        JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
        // return json
        return json;
    }

    /**
     * Function get Login status
     * */
    public boolean isUserLoggedIn(Context context){
        DatabaseHandler db = new DatabaseHandler(context);
        int count = db.getRowCount();
        if(count > 0){
            // user logged in
            return true;
        }
        return false;
    }

    /**
     * Function to logout user
     * Reset Database
     * */
    public boolean logoutUser(Context context){
        DatabaseHandler db = new DatabaseHandler(context);
        db.resetTables();
        return true;
    }


}

这是LoginActivity.java

package com.stmik.slidingmenu.utama;

import org.json.JSONException;
import org.json.JSONObject;

import com.stmik.slidingmenu.R;
import com.stmik.slidingmenu.library.DatabaseHandler;
import com.stmik.slidingmenu.library.UserFunctions;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.util.Log;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;         

public class LoginActivity extends Activity {

     Button btnLogin;
     Button btnLinkToRegister;
     EditText inputEmail;
     EditText inputPassword;
     TextView loginErrorMsg;

    // JSON Response node names
        private static String KEY_SUCCESS = "success";
        private static String KEY_ERROR = "error";
        private static String KEY_ERROR_MSG = "error_msg";
        private static String KEY_UID = "uid";
        private static String KEY_NAME = "nama";
        private static String KEY_EMAIL = "email";
        private static String KEY_CREATED_AT = "dibuat_tgl";

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

            if (android.os.Build.VERSION.SDK_INT > 9) {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
            }

            // Importing all assets like buttons, text fields
            inputEmail = (EditText) findViewById(R.id.loginEmail);
            inputPassword = (EditText) findViewById(R.id.loginPassword);
            btnLogin = (Button) findViewById(R.id.btnLogin);
            btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen);
            loginErrorMsg = (TextView) findViewById(R.id.login_error);

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

                public void onClick(View view) {
                    String email = inputEmail.getText().toString();
                    String password = inputPassword.getText().toString();
                    UserFunctions userFunction = new UserFunctions();
                    Log.d("Button", "Login");
                    JSONObject json = userFunction.loginUser(email, password);

                 // check for login response
                    try {
                        if (json.getString(KEY_SUCCESS) != null) {
                            loginErrorMsg.setText("");
                            String res = json.getString(KEY_SUCCESS); 
                            if(Integer.parseInt(res) == 1){
                                // user successfully logged in
                                // Store user details in SQLite Database
                                DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                                JSONObject json_user = json.getJSONObject("user");

                                // Clear all previous data in database
                                userFunction.logoutUser(getApplicationContext());
                                db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_EMAIL), json.getString(KEY_UID), json_user.getString(KEY_CREATED_AT));

                                // Launch Dashboard Screen
                                Intent dashboard = new Intent(getApplicationContext(), DashboardActivity.class);

                                // Close all views before launching Dashboard
                                dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(dashboard);

                                // Close Login Screen
                                finish();
                            }else{
                                // Error in login
                                loginErrorMsg.setText("Incorrect username/password");
                            }
                        }

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

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

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

这是我的RegisterActivity.java

package com.stmik.slidingmenu.utama;

import org.json.JSONException;
import org.json.JSONObject;

import com.stmik.slidingmenu.R;
import com.stmik.slidingmenu.library.DatabaseHandler;
import com.stmik.slidingmenu.library.UserFunctions;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class RegisterActivity extends Activity{

    Button btnRegister;
    Button btnLinkToLogin;
    EditText inputFullName;
    EditText inputEmail;
    EditText inputPassword;
    TextView registerErrorMsg;

    // JSON Response node names
    private static String KEY_SUCCESS = "success";
    private static String KEY_ERROR = "error";
    private static String KEY_ERROR_MSG = "error_msg";
    private static String KEY_UID = "uid";
    private static String KEY_NAME = "name";
    private static String KEY_EMAIL = "email";
    private static String KEY_CREATED_AT = "created_at";

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

        // Importing all assets like buttons, text fields
        inputFullName = (EditText) findViewById(R.id.registerName);
        inputEmail = (EditText) findViewById(R.id.registerEmail);
        inputPassword = (EditText) findViewById(R.id.registerPassword);
        btnRegister = (Button) findViewById(R.id.btnRegister);
        btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);
        registerErrorMsg = (TextView) findViewById(R.id.register_error);

        // Register Button Click event
        btnRegister.setOnClickListener(new View.OnClickListener() {         
            public void onClick(View view) {
                String name = inputFullName.getText().toString();
                String email = inputEmail.getText().toString();
                String password = inputPassword.getText().toString();
                UserFunctions userFunction = new UserFunctions();
                JSONObject json = userFunction.registerUser(name, email, password);

                // check for login response
                try {
                    if (json.getString(KEY_SUCCESS) != null) {
                        registerErrorMsg.setText("");
                        String res = json.getString(KEY_SUCCESS); 
                        if(Integer.parseInt(res) == 1){
                            // user successfully registred
                            // Store user details in SQLite Database
                            DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                            JSONObject json_user = json.getJSONObject("user");

                            // Clear all previous data in database
                            userFunction.logoutUser(getApplicationContext());
                            db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_EMAIL), json.getString(KEY_UID), json_user.getString(KEY_CREATED_AT));                        
                            // Launch Dashboard Screen
                            Intent dashboard = new Intent(getApplicationContext(), DashboardActivity.class);
                            // Close all views before launching Dashboard
                            dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(dashboard);
                            // Close Registration Screen
                            finish();
                        }else{
                            // Error in registration
                            registerErrorMsg.setText("Error occured in registration");
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

        // Link to Login Screen
        btnLinkToLogin.setOnClickListener(new View.OnClickListener() {

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

这是我的清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.stmik.slidingmenu"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.stmik.slidingmenu.utama.DashboardActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!--  Login Activity  -->
        <activity
            android:label="Login Account"
            android:name="com.stmik.slidingmenu.utama.LoginActivity">
        </activity>

        <!--  Register Activity  -->
        <activity 
            android:label="Register New Account"
            android:name="com.stmik.slidingmenu.utama.RegisterActivity" 
            ></activity>

    </application>



</manifest>

在我的login.xml上,只有2个用于电子邮件和编辑的edittext。密码和1个登录按钮。 在我的register.xml上,只有3个edittext用于名称,电子邮件,密码和1个注册按钮。

PLIZ帮我解决了这个问题。我真的不知道是什么原因造成的,我该怎么做.. T.T 提前谢谢,抱歉我的英语很差.. ^^

0 个答案:

没有答案