Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用户名/密码无效登录Android应用程序_Java_Android - Fatal编程技术网

Java 用户名/密码无效登录Android应用程序

Java 用户名/密码无效登录Android应用程序,java,android,Java,Android,嗨,伙计们,你们能帮我解释一下为什么用户和密码总是无效的,我相信URL可以调用用户的数据,但我不知道为什么会发生这种情况?在应用程序可以登录之前 以下是我的登录活动: import java.io.IOException; import org.apache.http.client.ClientProtocolException; import org.json.JSONException; import org.json.JSONObject; import android.app.Act

嗨,伙计们,你们能帮我解释一下为什么用户和密码总是无效的,我相信URL可以调用用户的数据,但我不知道为什么会发生这种情况?在应用程序可以登录之前

以下是我的登录活动:

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.inarts.mobile.merch.md.info.AppInfo;
import com.inarts.mobile.merch.md.info.UserInfo;
import com.inarts.rest.RequestMethod;
import com.inarts.rest.RestClient;

public class LoginActivity extends Activity {

    public String targetUrl = "";
    public String userName = "";
    public String userUsername = "";
    public String userPassword = "";
    public boolean userSaveCB = false;
    public static Context ctx;
    public static final String PREFS_NAME = "MyPrefsFile";

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ctx = this.getApplicationContext();
        targetUrl = Config.getEndPointUrl() + "/login.json";

        TextView tvcopyright = (TextView) findViewById(R.id.main_copyright);
        tvcopyright.setMovementMethod(LinkMovementMethod.getInstance());

        EditText tvUsername = (EditText) findViewById(R.id.main_user_txt);
        EditText tvPassword = (EditText) findViewById(R.id.main_pass_txt);
        CheckBox cbSavePassword = (CheckBox) findViewById(R.id.main_save_cb);

        if (isSavePassword()) {
            tvUsername.setText(getSavedUsername().toString());
            tvPassword.setText(getSavedPassword().toString());
            cbSavePassword.setChecked(true);
        } else {
            cbSavePassword.setChecked(false);
        }

        if (getLoginState()) {
            Log.i("ncdebug", "I am logged in");
            goToMainActivity();
        } else {

        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 1, 0, "Keluar").setIcon(R.drawable.ic_menu_exit);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case 1:
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onBackPressed() {

        return;
    }

    public void click_login(View view) {
        EditText user_txt = (EditText) findViewById(R.id.main_user_txt);
        EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt);

        if      (  user_txt.getText().toString().equals(AppInfo.adminName)
                && pass_txt.getText().toString().equals(AppInfo.adminPass)
                )
        {
            Intent intent = new Intent(ctx, StoreAddGeoActivity.class);
            startActivity(intent);
            finish();
        } else {
            new AuthenticateTask().execute(targetUrl, userUsername, userPassword);
        }

    }

    public void goToMainActivity() {
        Intent intent = new Intent(this.getApplicationContext(),
                MainActivity.class);
        this.startActivity(intent);
        finish();
    }

    public void saveLoginState() {
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("user_name", userName);
        editor.putString("user_username", userUsername);
        editor.putString("user_password", userPassword);
        editor.putBoolean("loginState", true);

        CheckBox cbSavePassword = (CheckBox) findViewById(R.id.main_save_cb);
        if (cbSavePassword.isChecked()) {
            editor.putBoolean("isSavePassword", true);
        } else {
            editor.putBoolean("isSavePassword", false);
        }

        UserInfo.username = userUsername;
        UserInfo.name = userName;
        UserInfo.loginstatus = true;

        editor.commit();
    }

    public boolean isSavePassword() {
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        boolean stat = settings.getBoolean("isSavePassword", false);

        return stat;
    }

    public String getSavedUsername() {
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

        return settings.getString("user_username", "");
    }

    public String getSavedPassword() {
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

        return settings.getString("user_password", "");
    }

    public boolean getLoginState() {
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

        UserInfo.username = settings.getString("user_username", "");
        UserInfo.name = settings.getString("user_name", "");

        boolean stat = settings.getBoolean("loginState", false);
        UserInfo.loginstatus = stat;

        return stat;
    }

    private class AuthenticateTask extends AsyncTask<String, String, String> {
        ProgressDialog dialog;

        @Override
        protected void onPreExecute() {
            dialog = ProgressDialog.show(LoginActivity.this, "", "Loading...",
                    true);
        }


        @Override
        protected String doInBackground(String... params) {

            RestClient client = new RestClient(params[0]);

//            EditText user_txt = (EditText) findViewById(R.id.main_user_txt);
//            EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt);
//            userUsername = user_txt.getText().toString();
//            userPassword = pass_txt.getText().toString();
//            client.AddParam("username", user_txt.getText().toString());
//            client.AddParam("password", pass_txt.getText().toString());

            client.AddParam("username", params[1]);
            client.AddParam("password", params[2]);

            try {
                client.Execute(RequestMethod.GET);
                return client.getResponse();
            } catch (ClientProtocolException e) {
                // e.printStackTrace();
                Toast.makeText(LoginActivity.ctx, e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                // e.printStackTrace();
                Toast.makeText(LoginActivity.ctx, e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            } catch (Exception e) {
                // e.printStackTrace();
                Toast.makeText(LoginActivity.ctx, e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String Result) {
            dialog.dismiss();
            if (Result != null) {
                parseJson(Result);
            } else {
                Toast.makeText(LoginActivity.ctx,
                        "Login Failed, Connection Error", Toast.LENGTH_SHORT)
                        .show();
            }
            System.out.println("Ini dia");
        }

        public void parseJson(String s) {
            try {
                JSONObject jobj = new JSONObject(s);
                String stat = jobj.getString("stat");

                if (stat.equals("failed")) {
                    String msg = jobj.getString("msg");
                    Toast.makeText(LoginActivity.ctx, msg, Toast.LENGTH_SHORT)
                            .show();
                } else {
                    userName = jobj.getString("name");

                    saveLoginState();

                    goToMainActivity();
                }

            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(LoginActivity.ctx, e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        }

    }

}

如果您需要其他解决问题的方法,请在下面询问,谢谢:)

问题在于您的
单击\u login()
方法。在那里,您正在使用空白数据初始化n/w调用异步。您可以执行以下操作来修复它:

public void click_login(View view) {
        EditText user_txt = (EditText) findViewById(R.id.main_user_txt);
        EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt);

        // Inititialising the string vars here
        userUsername = user_txt.getText().toString();
        userPassword = pass_txt.getText().toString();

        if ( userUsername.equals(AppInfo.adminName) && userPassword.equals(AppInfo.adminPass) ) { 
            Intent intent = new Intent(ctx, StoreAddGeoActivity.class);
            startActivity(intent);
            finish();
        } else { 
            new AuthenticateTask().execute(targetUrl, userUsername, userPassword);
        } 

    }

谢谢你,伙计,对不起,我没注意到:)
public void click_login(View view) {
        EditText user_txt = (EditText) findViewById(R.id.main_user_txt);
        EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt);

        // Inititialising the string vars here
        userUsername = user_txt.getText().toString();
        userPassword = pass_txt.getText().toString();

        if ( userUsername.equals(AppInfo.adminName) && userPassword.equals(AppInfo.adminPass) ) { 
            Intent intent = new Intent(ctx, StoreAddGeoActivity.class);
            startActivity(intent);
            finish();
        } else { 
            new AuthenticateTask().execute(targetUrl, userUsername, userPassword);
        } 

    }