Мое приложение ведет себя по-другому после установки подписанного APK - PullRequest
0 голосов
/ 05 мая 2018
public class MainActivity extends AppCompatActivity {
  private EditText email,password,repassword,name;
  private DatabaseReference mDatabase;
  private FirebaseAuth mAuth;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();// removes app title bar
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        setContentView(R.layout.activity_main);

        name  = (EditText) findViewById(R.id.nameid);
        email = (EditText) findViewById(R.id.emailid);
        password = (EditText) findViewById(R.id.passwordid);
          mDatabase=FirebaseDatabase.getInstance().getReference().child("users");
        mAuth = FirebaseAuth.getInstance();


    }


    public void signUpButtonClicked(View view){

        if (!TextUtils.isEmpty(email.getText().toString())&&!TextUtils.isEmpty(password.getText().toString())&& !TextUtils.isEmpty(name.getText().toString())){


            Toasty.error(MainActivity.this, "This is an error toast.", Toast.LENGTH_SHORT, true).show();

        }

        else {
            final ProgressDialog spinner = new ProgressDialog(MainActivity.this);
            spinner.setMessage("Please wait...");
            spinner.show();


            mDatabase.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    //check if already user phone
                    if (dataSnapshot.child(email.getText().toString()).exists()) {
                        spinner.dismiss();


                        Toasty.warning(MainActivity.this,"Sorry User registered",Toast.LENGTH_SHORT, true).show();
                    } else {

                        spinner.dismiss();
                        users User = new users(name.getText().toString(), password.getText().toString(), email.getText().toString());
                        mDatabase.child(email.getText().toString()).setValue(User);

                        Toast.makeText(MainActivity.this, "Signup Succesful !", Toast.LENGTH_SHORT).show();
                        Intent loginIntent = new Intent(MainActivity.this, Login.class);
                        startActivity(loginIntent);
                        finish();
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });


        }







    }

       public void loginClicked( View view){

           Intent startloging = new Intent(MainActivity.this,Login.class);
           startActivity(startloging);
       }
    }

    public class Login extends AppCompatActivity {
      private EditText userEmail,userPassword;
      private DatabaseReference mDatabase;
      private FirebaseAuth mAuth;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();// removes app title bar
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        setContentView(R.layout.activity_login);

        userEmail = (EditText) findViewById(R.id.emailid);
        userPassword = (EditText) findViewById(R.id.passwordid);
        mAuth = FirebaseAuth.getInstance();
        mDatabase = FirebaseDatabase.getInstance().getReference().child("users");


    }


    public void signUpButtonClicked(View view){

        Intent signup = new Intent(Login.this,MainActivity.class);
        startActivity(signup);

    }

    public void loginButttonClicked(View view) {


        if (userPassword.getText().toString().isEmpty()|userEmail.getText().toString().isEmpty()){

            Toast.makeText(this, "Please fill all!!", Toast.LENGTH_SHORT).show();


        }

        else {

            final ProgressDialog spinner = new ProgressDialog(Login.this);
            spinner.setMessage("Please wait...");
            spinner.show();



            mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {


                    if (dataSnapshot.child(userEmail.getText().toString()).exists()) {
                        spinner.dismiss();

                        users User = dataSnapshot.child(userEmail.getText().toString()).getValue(users.class);



                        Common.currentuser = User;


                        mDatabase.removeEventListener(this);

                        if (User.getPassword().equals(userPassword.getText().toString())) {

                            Intent menuIntent = new Intent(Login.this, Menu.class);
                            startActivity(menuIntent);
                            finish();

                            Toasty.success(Login.this, "Signin Successful", Toast.LENGTH_SHORT, true).show();


                  } else {

                            spinner.dismiss();
                            Toast.makeText(Login.this, "Signin Failed", Toast.LENGTH_SHORT).show();
                        }
                    } else {

                        spinner.dismiss();
                        Toast.makeText(Login.this, "User does not exist", Toast.LENGTH_SHORT).show();
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    }

}

Итак, мое приложение работало нормально в режиме отладки, затем я решил создать подписанный apk для отправки друзьям, чтобы они могли проверить его. Когда они попробовали это, приложение не входило в систему, не потому, что учетные данные неверны, а потому, что не удалось запустить следующее намерение (отображается тост: «Signin Successful») ; поэтому вместо того, чтобы начинать следующее намерение, оно возвращает меня к намерению подписки (кстати, подписка - это моя первая страница при запуске приложения).

Смущает то, что на моем телефоне все работало нормально (кстати, я запускаю из android studio для тестирования на моем телефоне), и я решил установить выпущенный apk, который я отправил своим друзьям. После этого мое приложение стало работать точно так же, как на их телефонах. (не запускается следующее намерение после успешного входа в систему) .. теперь я попытался переустановить apk отладки, и мое приложение продолжает работать так же ..

Теперь мое приложение работает совершенно по-другому, и именно из этого (MainActivity) следует, что если какое-либо из полей пустое, оно должно всплыть «Это ошибка с ошибкой». но вместо этого он говорит «Извините, пользователь зарегистрирован». Это также делает нечто похожее, когда вы заполняете все поля и нажимаете кнопку «Создать новую учетную запись», выдается тост с надписью «Это тост за ошибку». вместо "Извините, пользователь зарегистрирован" или "Регистрация прошла успешно!"

1 Ответ

0 голосов
/ 05 мая 2018

Причина, по которой он показывает тост This is an error toast, потому что в вашем if состоянии вы проверяете, являются ли текстовые поля пустыми или нет. В TextUtils.isEmpty() может возникнуть логическая проблема, которая возвращает true, если текстовые поля пусты, попробуйте использовать - TextUtils.isEmpty(string) || TextUtils.isEmpty(string1)|| TextUtils.isEmpty(string2). Я надеюсь, что это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...