Android 用户未登录,仍在获取主页

Android 用户未登录,仍在获取主页,android,Android,我想在用户第一次登录和第二次登录时显示Splash screen->Login screen->Home screen 当我从设备关闭应用程序并再次打开它时,如果用户已经登录,将显示主屏幕,如果我确实注销,将转到登录屏幕。但我没有得到这个流,这是我的代码 启动屏幕 public static boolean isDataSet; private boolean isPassPhraseCall; private ImageView imgLauncher; private String curr

我想在用户第一次登录和第二次登录时显示
Splash screen->Login screen->Home screen

当我从设备关闭应用程序并再次打开它时,如果用户已经登录,将显示主屏幕,如果我确实注销,将转到登录屏幕。但我没有得到这个流,这是我的代码

启动屏幕

public static boolean isDataSet;
private boolean isPassPhraseCall;
private ImageView imgLauncher;
private String currency = "";
private ProgressBar progressSplash;
private static int SPLASH_TIME_OUT = 3000;

@Override
protected void onCreate(Bundle savedInstanceState) {
try {
    /*Set Theme before View Created*/

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        // Bind IDs with xml
        setIDs();


        if(SalesApplication.welcomeShown)
        {
            startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        }
        else
        {
            Intent i = new Intent(SplashActivity.this,HomeActivity.class);
            startActivity(i);
        }
        LogToastUtils.ShowLog(Constants.TAG+"IN SLASH=====");

      //  LogToastUtils.ShowLog(Constants.TAG+"VALUE OF PREFS====="+StoreSharedPreference.getString(PREF_FIRST_TIME, ""));


       // setRedirectionEvent();

        imgLauncher.setImageResource(R.mipmap.ic_launcher);
        new Handler().postDelayed(new Runnable() {

            /*
             * Showing splash screen with a timer. This will be useful when you
             * want to show case your app logo / company
             */

            @Override
            public void run() {



                //Validation for logout
                Intent intent = getIntent();
                Boolean finish = intent.getBooleanExtra("finish",false); //
                if (finish) {
                    SharedPreferences settings = getSharedPreferences("prefs", 0);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putBoolean("firstRun", true);
                    editor.commit();
                    startActivity(new Intent(SplashActivity.this, LoginActivity.class));

                    finish();
                    return;
                }
                else
                {
                    Intent i = new Intent(SplashActivity.this, HomeActivity.class);
                    startActivity(i);

                }



                //Intent i = new Intent(SplashActivity.this, LoginActivity.class);
                //startActivity(i);

                // close this activity
                finish();
            }
        }, SPLASH_TIME_OUT);


        //                   
        imgLauncher.setImageResource(R.mipmap.ic_launcher);
                } catch (Exception e) {
                    e.printStackTrace();
                    imgLauncher.setImageResource(R.mipmap.ic_launcher);
                }


            }

            /* setIDs method offer to Bind View with Xml layout's ids.
             */
            private void setIDs() {
                imgLauncher = (ImageView) findViewById(R.id.img_launcher);
                progressSplash = (ProgressBar) findViewById(R.id.progress_splash);
            }


            /**
             * setRedirectionEvent method redirect Activity
             */
            private void setRedirectionEvent() {
                try {
                    StoreSharedPreference.init(getApplicationContext());
                    // For first time screen open redirect to User Permission Else Main Activity

                    if (StoreSharedPreference.getString(PREF_FIRST_TIME, "").equals("")) {
                        // Set permission get for first time screen open
                        StoreSharedPreference.putString(PREF_FIRST_TIME, PREF_FIRST_TIME_STRING);
                        Intent intentPermission = new Intent(getApplicationContext(), PasswordActivity.class);
                        startActivity(intentPermission);
                        finish();
                    } else {
                        Intent intentMain = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(intentMain);
                        finish();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }

            @Override
            protected void onResume() {
                super.onResume();
            }
package com.example.abhishek.myapplication;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.example.abhishek.myapplication.database.UserDataBase;
import com.example.abhishek.myapplication.dto.userDTO;
import com.example.abhishek.myapplication.helper.Constants;
import com.example.abhishek.myapplication.request.RequestHandler;
import com.example.abhishek.myapplication.utils.LogToastUtils;
import com.example.abhishek.myapplication.utils.StoreSharedPreference;
import com.example.abhishek.myapplication.views.LayoutRipple;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;

import static com.example.abhishek.myapplication.helper.Constants.OTP_INFORMATIVE;
import static com.example.abhishek.myapplication.helper.Constants.OTP_TEXT;
import static com.example.abhishek.myapplication.helper.Constants.OTP_TYPE;
import static com.example.abhishek.myapplication.helper.Constants.PREF_FIRST_TIME;
import static com.example.abhishek.myapplication.helper.Constants.PREF_FIRST_TIME_STRING;
import static com.example.abhishek.myapplication.helper.Constants.SENDER_ID;
import static com.example.abhishek.myapplication.helper.Constants.SERVER_URL;
import static com.example.abhishek.myapplication.helper.Constants.USER_NAME;
import static com.example.abhishek.myapplication.helper.Constants.USER_PASSWORDD;

public class LoginActivity extends AppCompatActivity {


    //Declaration

    ImageView imageViewLogo;
    TextView tvSignup, tvContinue;
    TextInputEditText edtMobileNumer;
    private static String mobileNumber;
    private String pinNumber;
    Boolean validPhone;
    private TextInputLayout txtInputLayout;
    private List<userDTO> userDTOList = new ArrayList<>();
    LinearLayout llAccountDialogLayout, llLogin;
    private LayoutRipple lrYes, lrNo;
    ProgressBar pbProgressDialog;
    private Boolean found = false;

    //flag for is authorized mobile
    //0 = authorized
    //1 = Unauthorized


    private UserDataBase userDataBase;
    public static userDTO userDTO;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);

        //Set id of controls here
        setIds();


        userDTO = new userDTO();
        userDTOList.clear();


        //Databbase Initialization
        userDataBase = new UserDataBase(getApplicationContext());


        //Click event of all controls
        setOnClick();


    }


    private void setIds() {

        imageViewLogo = (ImageView) findViewById(R.id.img_logo);
        tvSignup = (TextView) findViewById(R.id.tv_signup);
        tvContinue = (TextView) findViewById(R.id.tv_continue);
        txtInputLayout = (TextInputLayout) findViewById(R.id.text_input_login_email_number);
        edtMobileNumer = (TextInputEditText) findViewById(R.id.et_login_email_number);
        llAccountDialogLayout = (LinearLayout) findViewById(R.id.ll_account_dialog_layout);
        lrYes = (LayoutRipple) findViewById(R.id.lr_yes);
        lrNo = (LayoutRipple) findViewById(R.id.lr_no);
        pbProgressDialog = (ProgressBar) findViewById(R.id.pb_progress_dialog);
        llLogin = (LinearLayout) findViewById(R.id.ll_login);

    }

    private void setOnClick() {


        tvContinue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                mobileNumber = edtMobileNumer.getText().toString();
                StoreSharedPreference.init(LoginActivity.this);
                StoreSharedPreference.putString("PinNumber", pinNumber);
                txtInputLayout.setErrorEnabled(false);

                if (!mobileNumber.equals("")) {

                    validPhone = isValidMobile(mobileNumber);
                    if (validPhone) {

                        userDTOList = userDataBase.getData();
                        LogToastUtils.ShowLog(Constants.TAG + "SIZE OF USERLIST" + userDTOList.size());

                        if (userDTOList.size() > 0) {

                            for (int i = 0; i < userDTOList.size(); i++) {

                                userDTO = userDTOList.get(i);

                                LogToastUtils.ShowLog(Constants.TAG + "Mobile number from db===" + userDTOList.get(i).getMobilenumber());
                                LogToastUtils.ShowLog(Constants.TAG + "Authorized  from db===" + userDTOList.get(i).getIsAuthorized());
                                LogToastUtils.ShowLog("Mobile number is===" + mobileNumber);


                                if (userDTO.getMobilenumber() == Long.parseLong(mobileNumber)) {
                                    LogToastUtils.ShowLog(Constants.TAG + "Mobile number exists");

                                    userDTO.setIsAuthorized(0);
                                    userDTO.setMobilenumber(Long.parseLong(mobileNumber));
//                                    userDTOList.add(userDTO);
                                    userDataBase.addData(userDTO);
                                    found = true;


                                } else {

                                    LogToastUtils.ShowLog("POSITION IS===" + i);
                                    userDTO.setIsAuthorized(1);
                                    userDTO.setMobilenumber(Long.parseLong(mobileNumber));
//                                    userDTOList.add(userDTO);
                                    userDataBase.addData(userDTO);
                                    LogToastUtils.ShowLog(Constants.TAG + "Mobile number not exists");
                                }
                            }
                            if (found) {

                                Intent intent = new Intent(LoginActivity.this, PasswordActivity.class);
                                intent.putExtra("finish", true);
                                startActivity(intent);

                            } else {
                                llAccountDialogLayout.setVisibility(View.VISIBLE);
                                llLogin.setVisibility(View.GONE);
                                tvContinue.setVisibility(View.GONE);
                            }
                        } else {
                            userDTO.setMobilenumber(Long.parseLong(mobileNumber));
                            userDTO.setIsAuthorized(1);
                            userDataBase.addData(userDTO);
                        }

                    } else {

                        txtInputLayout.setErrorEnabled(true);
                        txtInputLayout.setError("Enter valid data");


                    }
                }
            }
        });

        lrYes.setOnRippleCompleteListener(new LayoutRipple.OnRippleCompleteListener() {
            @Override
            public void onComplete(LayoutRipple layoutRipple) {

                generatePIN();
                pbProgressDialog.setVisibility(View.VISIBLE);
                llLogin.setVisibility(View.GONE);
                tvContinue.setVisibility(View.GONE);

                loginApiCall(mobileNumber, pinNumber);
            }
        });

        lrNo.setOnRippleCompleteListener(new LayoutRipple.OnRippleCompleteListener() {
            @Override
            public void onComplete(LayoutRipple layoutRipple) {

                finish();
            }
        });
    }

    private void loginApiCall(final String mobileNumber, final String pinNumber) {


        class RegisterUser extends AsyncTask<Void, Void, String> {

            private ProgressBar progressBar;

            @Override
            protected String doInBackground(Void... voids) {
                //creating request handler object
                RequestHandler requestHandler = new RequestHandler();

                //creating request parameters
                HashMap<String, String> params = new HashMap<>();
                params.put("username", USER_NAME);
                params.put("password", USER_PASSWORDD);
                params.put("senderid", SENDER_ID);
                params.put("to", mobileNumber);
                params.put("text", OTP_TEXT + pinNumber);
                params.put("route", OTP_INFORMATIVE);
                params.put("type", OTP_TYPE);

                //returing the response
                return requestHandler.sendPostRequest(SERVER_URL, params);
            }

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                //displaying the progress bar while user registers on the server
                progressBar = (ProgressBar) findViewById(R.id.pb_progress_dialog);
                progressBar.setVisibility(View.VISIBLE);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                //hiding the progressbar after completion
                progressBar.setVisibility(View.GONE);
                pbProgressDialog.setVisibility(View.GONE);
                userDTOList = userDataBase.getData();


                try {

                    LogToastUtils.ShowLog("Response string===" + s);

                    if (s.equals("ERROR incorrect username or password (or user disabled)")) {
                        LogToastUtils.ShowLog("IN ERROR===" + s);
                    } else {
                        userDTO.setMobilenumber(Long.parseLong(mobileNumber));
                        userDTO.setIsAuthorized(1);
                        userDTOList.add(userDTO);
                        userDataBase.addData(userDTO);

                        Intent i = new Intent(LoginActivity.this, PasswordActivity.class);
                        i.putExtra("finish", true);
                        i.putExtra("mobileNumber", mobileNumber);
                        startActivity(i);

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

        //executing the async task
        RegisterUser ru = new RegisterUser();
        ru.execute();
    }

    public void generatePIN() {

        //generate a 4 digit integer 1000 <10000
        int randomPIN = (int) (Math.random() * 9000) + 1000;
        //Store integer in a string
        pinNumber = String.valueOf(randomPIN);
        LogToastUtils.ShowLog("OTP IS====" + pinNumber);
    }


    private boolean isValidMobile(String phone) {
        boolean check = false;
        if (!Pattern.matches("[a-zA-Z]+", phone)) {
            LogToastUtils.ShowLog("Length===" + phone.length());

            if (phone.length() != 10) {
                check = false;
                txtInputLayout.setError("Not Valid Number");
            } else {
                check = true;
            }
        } else {
            check = false;
        }
        return check;
    }


}
    public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

        private static ActionBarDrawerToggle toggle;
        public static DrawerLayout drawer;
        private static android.support.v7.widget.Toolbar toolbar;
        //Fragment HomeFragment;
        NavigationView navigationView;


        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            setId();

           SalesApplication.welcomeShown = true;



            FragmentTransaction tx = HomeActivity.this.getSupportFragmentManager().beginTransaction();
            tx.replace(R.id.fragment_main, new HomeFragment());
            tx.commit();

            navigationView.setNavigationItemSelectedListener(this);
            setNavigationDrawerView();


        }

        private void setId() {

            navigationView = findViewById(R.id.nav_view);
            drawer = findViewById(R.id.drawer_layout);
            toolbar = findViewById(R.id.toolbar);

        }

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            switch (item.getItemId()) {

                //Category page

                case R.id.nav_item_category:


                    Utils.changeFragment(R.id.fragment_main, new CategoryFragment(), getSupportFragmentManager(), null, "");

                    break;

                //Whishlist page

                case R.id.nav_item_wishlist:


                    Utils.changeFragment(R.id.fragment_main, new WishListFragment(), getSupportFragmentManager(), null, "");

                    break;

                //About us page

                case R.id.nav_item_aboutus:


                    Utils.changeFragment(R.id.fragment_main, new AboutUsFragment(), getSupportFragmentManager(), null, "");

                    break;

                //Contact us page
                case R.id.nav_item_contactus:


                    Utils.changeFragment(R.id.fragment_main, new ContactUsFragment(), getSupportFragmentManager(), null, "");

                    break;

                //Help
                case R.id.nav_item_help:


                    break;

                //Signout
                case R.id.nav_item_signout:




    //                StoreSharedPreference.ClearPreference();
                    //SalesApplication.welcomeShown = true;
                    Intent intent = new Intent(this, SplashActivity.class);
                    intent.putExtra("finish", true);
                    //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
                    startActivity(intent);
                    finish();


                    break;


            }
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }

        public void setNavigationDrawerView() {
            toggle = new ActionBarDrawerToggle(HomeActivity.this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {

                @Override
                public void onDrawerClosed(View view) {
                    super.onDrawerClosed(view);
                }

                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);


                }

                @Override
                public void onDrawerSlide(View drawerView, float slideOffset) {
                    super.onDrawerSlide(drawerView, 0); // this disables the animation
                }
            };


            drawer.setDrawerListener(toggle);
            toggle.syncState();
        }

    }

Password screen

   TextInputEditText edtPassword;
    TextInputLayout txtInputPassword;
    private String password;
    private LayoutRipple lrSubmit;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_password);

        StoreSharedPreference.init(this);

        setIds();


        StoreSharedPreference.putString("Password===",password);

        lrSubmit.setOnRippleCompleteListener(new LayoutRipple.OnRippleCompleteListener() {
            @Override
            public void onComplete(LayoutRipple layoutRipple) {


                password= edtPassword.getText().toString();

                if(edtPassword.getText().toString().length()<8 &&!isValidPassword(edtPassword.getText().toString())){
                    System.out.println("Not Valid");
                    txtInputPassword.setError("Enter Valid Password");

                }else{

                    System.out.println("Valid");
                    Intent i = new Intent(PasswordActivity.this,HomeActivity.class);
                    startActivity(i);
                }

            }
        });



    }

    private void setIds()
    {
        lrSubmit = (LayoutRipple)findViewById(R.id.lr_submit);
        txtInputPassword = (TextInputLayout)findViewById(R.id.text_input_login_password);
        edtPassword = (TextInputEditText) findViewById(R.id.et_login_password);

    }

    public static boolean isValidPassword(final String password) {

        Pattern pattern;
        Matcher matcher;
        final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!])(?=\\S+$).{4,}$";
        pattern = Pattern.compile(PASSWORD_PATTERN);
        matcher = pattern.matcher(password);

        return matcher.matches();

    }
登录屏幕

public static boolean isDataSet;
private boolean isPassPhraseCall;
private ImageView imgLauncher;
private String currency = "";
private ProgressBar progressSplash;
private static int SPLASH_TIME_OUT = 3000;

@Override
protected void onCreate(Bundle savedInstanceState) {
try {
    /*Set Theme before View Created*/

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        // Bind IDs with xml
        setIDs();


        if(SalesApplication.welcomeShown)
        {
            startActivity(new Intent(SplashActivity.this, LoginActivity.class));
        }
        else
        {
            Intent i = new Intent(SplashActivity.this,HomeActivity.class);
            startActivity(i);
        }
        LogToastUtils.ShowLog(Constants.TAG+"IN SLASH=====");

      //  LogToastUtils.ShowLog(Constants.TAG+"VALUE OF PREFS====="+StoreSharedPreference.getString(PREF_FIRST_TIME, ""));


       // setRedirectionEvent();

        imgLauncher.setImageResource(R.mipmap.ic_launcher);
        new Handler().postDelayed(new Runnable() {

            /*
             * Showing splash screen with a timer. This will be useful when you
             * want to show case your app logo / company
             */

            @Override
            public void run() {



                //Validation for logout
                Intent intent = getIntent();
                Boolean finish = intent.getBooleanExtra("finish",false); //
                if (finish) {
                    SharedPreferences settings = getSharedPreferences("prefs", 0);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putBoolean("firstRun", true);
                    editor.commit();
                    startActivity(new Intent(SplashActivity.this, LoginActivity.class));

                    finish();
                    return;
                }
                else
                {
                    Intent i = new Intent(SplashActivity.this, HomeActivity.class);
                    startActivity(i);

                }



                //Intent i = new Intent(SplashActivity.this, LoginActivity.class);
                //startActivity(i);

                // close this activity
                finish();
            }
        }, SPLASH_TIME_OUT);


        //                   
        imgLauncher.setImageResource(R.mipmap.ic_launcher);
                } catch (Exception e) {
                    e.printStackTrace();
                    imgLauncher.setImageResource(R.mipmap.ic_launcher);
                }


            }

            /* setIDs method offer to Bind View with Xml layout's ids.
             */
            private void setIDs() {
                imgLauncher = (ImageView) findViewById(R.id.img_launcher);
                progressSplash = (ProgressBar) findViewById(R.id.progress_splash);
            }


            /**
             * setRedirectionEvent method redirect Activity
             */
            private void setRedirectionEvent() {
                try {
                    StoreSharedPreference.init(getApplicationContext());
                    // For first time screen open redirect to User Permission Else Main Activity

                    if (StoreSharedPreference.getString(PREF_FIRST_TIME, "").equals("")) {
                        // Set permission get for first time screen open
                        StoreSharedPreference.putString(PREF_FIRST_TIME, PREF_FIRST_TIME_STRING);
                        Intent intentPermission = new Intent(getApplicationContext(), PasswordActivity.class);
                        startActivity(intentPermission);
                        finish();
                    } else {
                        Intent intentMain = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(intentMain);
                        finish();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }

            @Override
            protected void onResume() {
                super.onResume();
            }
package com.example.abhishek.myapplication;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.example.abhishek.myapplication.database.UserDataBase;
import com.example.abhishek.myapplication.dto.userDTO;
import com.example.abhishek.myapplication.helper.Constants;
import com.example.abhishek.myapplication.request.RequestHandler;
import com.example.abhishek.myapplication.utils.LogToastUtils;
import com.example.abhishek.myapplication.utils.StoreSharedPreference;
import com.example.abhishek.myapplication.views.LayoutRipple;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;

import static com.example.abhishek.myapplication.helper.Constants.OTP_INFORMATIVE;
import static com.example.abhishek.myapplication.helper.Constants.OTP_TEXT;
import static com.example.abhishek.myapplication.helper.Constants.OTP_TYPE;
import static com.example.abhishek.myapplication.helper.Constants.PREF_FIRST_TIME;
import static com.example.abhishek.myapplication.helper.Constants.PREF_FIRST_TIME_STRING;
import static com.example.abhishek.myapplication.helper.Constants.SENDER_ID;
import static com.example.abhishek.myapplication.helper.Constants.SERVER_URL;
import static com.example.abhishek.myapplication.helper.Constants.USER_NAME;
import static com.example.abhishek.myapplication.helper.Constants.USER_PASSWORDD;

public class LoginActivity extends AppCompatActivity {


    //Declaration

    ImageView imageViewLogo;
    TextView tvSignup, tvContinue;
    TextInputEditText edtMobileNumer;
    private static String mobileNumber;
    private String pinNumber;
    Boolean validPhone;
    private TextInputLayout txtInputLayout;
    private List<userDTO> userDTOList = new ArrayList<>();
    LinearLayout llAccountDialogLayout, llLogin;
    private LayoutRipple lrYes, lrNo;
    ProgressBar pbProgressDialog;
    private Boolean found = false;

    //flag for is authorized mobile
    //0 = authorized
    //1 = Unauthorized


    private UserDataBase userDataBase;
    public static userDTO userDTO;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);

        //Set id of controls here
        setIds();


        userDTO = new userDTO();
        userDTOList.clear();


        //Databbase Initialization
        userDataBase = new UserDataBase(getApplicationContext());


        //Click event of all controls
        setOnClick();


    }


    private void setIds() {

        imageViewLogo = (ImageView) findViewById(R.id.img_logo);
        tvSignup = (TextView) findViewById(R.id.tv_signup);
        tvContinue = (TextView) findViewById(R.id.tv_continue);
        txtInputLayout = (TextInputLayout) findViewById(R.id.text_input_login_email_number);
        edtMobileNumer = (TextInputEditText) findViewById(R.id.et_login_email_number);
        llAccountDialogLayout = (LinearLayout) findViewById(R.id.ll_account_dialog_layout);
        lrYes = (LayoutRipple) findViewById(R.id.lr_yes);
        lrNo = (LayoutRipple) findViewById(R.id.lr_no);
        pbProgressDialog = (ProgressBar) findViewById(R.id.pb_progress_dialog);
        llLogin = (LinearLayout) findViewById(R.id.ll_login);

    }

    private void setOnClick() {


        tvContinue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                mobileNumber = edtMobileNumer.getText().toString();
                StoreSharedPreference.init(LoginActivity.this);
                StoreSharedPreference.putString("PinNumber", pinNumber);
                txtInputLayout.setErrorEnabled(false);

                if (!mobileNumber.equals("")) {

                    validPhone = isValidMobile(mobileNumber);
                    if (validPhone) {

                        userDTOList = userDataBase.getData();
                        LogToastUtils.ShowLog(Constants.TAG + "SIZE OF USERLIST" + userDTOList.size());

                        if (userDTOList.size() > 0) {

                            for (int i = 0; i < userDTOList.size(); i++) {

                                userDTO = userDTOList.get(i);

                                LogToastUtils.ShowLog(Constants.TAG + "Mobile number from db===" + userDTOList.get(i).getMobilenumber());
                                LogToastUtils.ShowLog(Constants.TAG + "Authorized  from db===" + userDTOList.get(i).getIsAuthorized());
                                LogToastUtils.ShowLog("Mobile number is===" + mobileNumber);


                                if (userDTO.getMobilenumber() == Long.parseLong(mobileNumber)) {
                                    LogToastUtils.ShowLog(Constants.TAG + "Mobile number exists");

                                    userDTO.setIsAuthorized(0);
                                    userDTO.setMobilenumber(Long.parseLong(mobileNumber));
//                                    userDTOList.add(userDTO);
                                    userDataBase.addData(userDTO);
                                    found = true;


                                } else {

                                    LogToastUtils.ShowLog("POSITION IS===" + i);
                                    userDTO.setIsAuthorized(1);
                                    userDTO.setMobilenumber(Long.parseLong(mobileNumber));
//                                    userDTOList.add(userDTO);
                                    userDataBase.addData(userDTO);
                                    LogToastUtils.ShowLog(Constants.TAG + "Mobile number not exists");
                                }
                            }
                            if (found) {

                                Intent intent = new Intent(LoginActivity.this, PasswordActivity.class);
                                intent.putExtra("finish", true);
                                startActivity(intent);

                            } else {
                                llAccountDialogLayout.setVisibility(View.VISIBLE);
                                llLogin.setVisibility(View.GONE);
                                tvContinue.setVisibility(View.GONE);
                            }
                        } else {
                            userDTO.setMobilenumber(Long.parseLong(mobileNumber));
                            userDTO.setIsAuthorized(1);
                            userDataBase.addData(userDTO);
                        }

                    } else {

                        txtInputLayout.setErrorEnabled(true);
                        txtInputLayout.setError("Enter valid data");


                    }
                }
            }
        });

        lrYes.setOnRippleCompleteListener(new LayoutRipple.OnRippleCompleteListener() {
            @Override
            public void onComplete(LayoutRipple layoutRipple) {

                generatePIN();
                pbProgressDialog.setVisibility(View.VISIBLE);
                llLogin.setVisibility(View.GONE);
                tvContinue.setVisibility(View.GONE);

                loginApiCall(mobileNumber, pinNumber);
            }
        });

        lrNo.setOnRippleCompleteListener(new LayoutRipple.OnRippleCompleteListener() {
            @Override
            public void onComplete(LayoutRipple layoutRipple) {

                finish();
            }
        });
    }

    private void loginApiCall(final String mobileNumber, final String pinNumber) {


        class RegisterUser extends AsyncTask<Void, Void, String> {

            private ProgressBar progressBar;

            @Override
            protected String doInBackground(Void... voids) {
                //creating request handler object
                RequestHandler requestHandler = new RequestHandler();

                //creating request parameters
                HashMap<String, String> params = new HashMap<>();
                params.put("username", USER_NAME);
                params.put("password", USER_PASSWORDD);
                params.put("senderid", SENDER_ID);
                params.put("to", mobileNumber);
                params.put("text", OTP_TEXT + pinNumber);
                params.put("route", OTP_INFORMATIVE);
                params.put("type", OTP_TYPE);

                //returing the response
                return requestHandler.sendPostRequest(SERVER_URL, params);
            }

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                //displaying the progress bar while user registers on the server
                progressBar = (ProgressBar) findViewById(R.id.pb_progress_dialog);
                progressBar.setVisibility(View.VISIBLE);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                //hiding the progressbar after completion
                progressBar.setVisibility(View.GONE);
                pbProgressDialog.setVisibility(View.GONE);
                userDTOList = userDataBase.getData();


                try {

                    LogToastUtils.ShowLog("Response string===" + s);

                    if (s.equals("ERROR incorrect username or password (or user disabled)")) {
                        LogToastUtils.ShowLog("IN ERROR===" + s);
                    } else {
                        userDTO.setMobilenumber(Long.parseLong(mobileNumber));
                        userDTO.setIsAuthorized(1);
                        userDTOList.add(userDTO);
                        userDataBase.addData(userDTO);

                        Intent i = new Intent(LoginActivity.this, PasswordActivity.class);
                        i.putExtra("finish", true);
                        i.putExtra("mobileNumber", mobileNumber);
                        startActivity(i);

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

        //executing the async task
        RegisterUser ru = new RegisterUser();
        ru.execute();
    }

    public void generatePIN() {

        //generate a 4 digit integer 1000 <10000
        int randomPIN = (int) (Math.random() * 9000) + 1000;
        //Store integer in a string
        pinNumber = String.valueOf(randomPIN);
        LogToastUtils.ShowLog("OTP IS====" + pinNumber);
    }


    private boolean isValidMobile(String phone) {
        boolean check = false;
        if (!Pattern.matches("[a-zA-Z]+", phone)) {
            LogToastUtils.ShowLog("Length===" + phone.length());

            if (phone.length() != 10) {
                check = false;
                txtInputLayout.setError("Not Valid Number");
            } else {
                check = true;
            }
        } else {
            check = false;
        }
        return check;
    }


}
    public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

        private static ActionBarDrawerToggle toggle;
        public static DrawerLayout drawer;
        private static android.support.v7.widget.Toolbar toolbar;
        //Fragment HomeFragment;
        NavigationView navigationView;


        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            setId();

           SalesApplication.welcomeShown = true;



            FragmentTransaction tx = HomeActivity.this.getSupportFragmentManager().beginTransaction();
            tx.replace(R.id.fragment_main, new HomeFragment());
            tx.commit();

            navigationView.setNavigationItemSelectedListener(this);
            setNavigationDrawerView();


        }

        private void setId() {

            navigationView = findViewById(R.id.nav_view);
            drawer = findViewById(R.id.drawer_layout);
            toolbar = findViewById(R.id.toolbar);

        }

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            switch (item.getItemId()) {

                //Category page

                case R.id.nav_item_category:


                    Utils.changeFragment(R.id.fragment_main, new CategoryFragment(), getSupportFragmentManager(), null, "");

                    break;

                //Whishlist page

                case R.id.nav_item_wishlist:


                    Utils.changeFragment(R.id.fragment_main, new WishListFragment(), getSupportFragmentManager(), null, "");

                    break;

                //About us page

                case R.id.nav_item_aboutus:


                    Utils.changeFragment(R.id.fragment_main, new AboutUsFragment(), getSupportFragmentManager(), null, "");

                    break;

                //Contact us page
                case R.id.nav_item_contactus:


                    Utils.changeFragment(R.id.fragment_main, new ContactUsFragment(), getSupportFragmentManager(), null, "");

                    break;

                //Help
                case R.id.nav_item_help:


                    break;

                //Signout
                case R.id.nav_item_signout:




    //                StoreSharedPreference.ClearPreference();
                    //SalesApplication.welcomeShown = true;
                    Intent intent = new Intent(this, SplashActivity.class);
                    intent.putExtra("finish", true);
                    //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
                    startActivity(intent);
                    finish();


                    break;


            }
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }

        public void setNavigationDrawerView() {
            toggle = new ActionBarDrawerToggle(HomeActivity.this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {

                @Override
                public void onDrawerClosed(View view) {
                    super.onDrawerClosed(view);
                }

                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);


                }

                @Override
                public void onDrawerSlide(View drawerView, float slideOffset) {
                    super.onDrawerSlide(drawerView, 0); // this disables the animation
                }
            };


            drawer.setDrawerListener(toggle);
            toggle.syncState();
        }

    }

Password screen

   TextInputEditText edtPassword;
    TextInputLayout txtInputPassword;
    private String password;
    private LayoutRipple lrSubmit;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_password);

        StoreSharedPreference.init(this);

        setIds();


        StoreSharedPreference.putString("Password===",password);

        lrSubmit.setOnRippleCompleteListener(new LayoutRipple.OnRippleCompleteListener() {
            @Override
            public void onComplete(LayoutRipple layoutRipple) {


                password= edtPassword.getText().toString();

                if(edtPassword.getText().toString().length()<8 &&!isValidPassword(edtPassword.getText().toString())){
                    System.out.println("Not Valid");
                    txtInputPassword.setError("Enter Valid Password");

                }else{

                    System.out.println("Valid");
                    Intent i = new Intent(PasswordActivity.this,HomeActivity.class);
                    startActivity(i);
                }

            }
        });



    }

    private void setIds()
    {
        lrSubmit = (LayoutRipple)findViewById(R.id.lr_submit);
        txtInputPassword = (TextInputLayout)findViewById(R.id.text_input_login_password);
        edtPassword = (TextInputEditText) findViewById(R.id.et_login_password);

    }

    public static boolean isValidPassword(final String password) {

        Pattern pattern;
        Matcher matcher;
        final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!])(?=\\S+$).{4,}$";
        pattern = Pattern.compile(PASSWORD_PATTERN);
        matcher = pattern.matcher(password);

        return matcher.matches();

    }
package com.example.abhishek.myapplication;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.design.widget.text输入文本;
导入android.support.design.widget.TextInputLayout;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.view;
导入android.widget.ImageView;
导入android.widget.LinearLayout;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入com.example.abhishek.myapplication.database.UserDataBase;
导入com.example.abhishek.myapplication.dto.userDTO;
导入com.example.abhishek.myapplication.helper.Constants;
导入com.example.abhishek.myapplication.request.RequestHandler;
导入com.example.abhishek.myapplication.utils.LogToastUtils;
导入com.example.abhishek.myapplication.utils.StoreSharedReference;
导入com.example.abhishek.myapplication.views.layoututripple;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.regex.Pattern;
导入静态com.example.abhishek.myapplication.helper.Constants.OTP_;
导入静态com.example.abhishek.myapplication.helper.Constants.OTP_TEXT;
导入静态com.example.abhishek.myapplication.helper.Constants.OTP_TYPE;
首次导入静态com.example.abhishek.myapplication.helper.Constants.PREF_;
导入静态com.example.abhishek.myapplication.helper.Constants.PREF_FIRST_TIME_字符串;
导入静态com.example.abhishek.myapplication.helper.Constants.SENDER\u ID;
导入静态com.example.abhishek.myapplication.helper.Constants.SERVER\u URL;
导入静态com.example.abhishek.myapplication.helper.Constants.USER_NAME;
导入静态com.example.abhishek.myapplication.helper.Constants.USER_PASSWORDD;
公共类LoginActivity扩展了AppCompatActivity{
//声明
ImageView图标;
text查看电视注册,电视继续;
textinputtext-edtMobileNumer;
私有静态字符串;
私有字符串pinNumber;
布尔有效音素;
私有文本输入布局txtInputLayout;
private List userDTOList=new ArrayList();
LinearLayout llAccountDialogLayout,llLogin;
私人停车场轻轨是,轻轨号;
ProgressBar-pbProgressDialog;
找到的私有布尔值=false;
//授权移动的标志
//0=授权
//1=未经授权
私有用户数据库;
公共静态userDTO userDTO;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
//在此设置控件的id
setIds();
userDTO=新的userDTO();
userDTOList.clear();
//数据库初始化
userDataBase=新的userDataBase(getApplicationContext());
//单击所有控件的事件
setOnClick();
}
私有void setIds(){
imageViewLogo=(ImageView)findViewById(R.id.img_徽标);
tvSignup=(TextView)findviewbyd(R.id.tv\u注册);
tvContinue=(TextView)findViewById(R.id.tv\u continue);
txtInputLayout=(TextInputLayout)findViewById(R.id.text\u input\u login\u email\u number);
edtMobileNumer=(textInputItemText)findViewById(R.id.et\u登录\电子邮件\号码);
llAccountDialogLayout=(LinearLayout)findViewById(R.id.ll\u account\u dialog\u layout);
lrYes=(LayoutRipple)findViewById(R.id.lr_yes);
lrNo=(LayoutRipple)findViewById(R.id.lr_no);
pbProgressDialog=(ProgressBar)findViewById(R.id.pb\u progress\u dialog);
llLogin=(LinearLayout)findviewbyd(R.id.ll\u login);
}
私有void setOnClick(){
tvContinue.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mobileNumber=edtMobileNumer.getText().toString();
StoreSharedPreference.init(LoginActivity.this);
StoreSharedPreference.putString(“PinNumber”,PinNumber);
TXInputLayout.setErrorEnabled(false);
如果(!mobileNumber.equals(“”){
validPhone=isValidMobile(移动电话号码);
如果(有效电话){
userDTOList=userDataBase.getData();
LogToastUtils.ShowLog(Constants.TAG+“用户列表的大小”+userDTOList.SIZE());
如果(userDTOList.size()>0){
对于(int i=0;iSharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
//Do a check if this exists.
// if the user is logged in, continue to main activity.
if (pref.getBoolean("loggedIn", null)) {
    //continue to main activity.
} else {
    editor.put("loggedIn", false);  
    editor.commit(); 
    // Go into the login/splash (whatever you need).
}
editor.put("loggedIn", true);  
editor.commit(); 
// Go into the main activity for logged in users. 
//Do a check if this exists.
if (pref.getBoolean("loggedIn", null)) {
    editor.put("loggedIn", false);  
    editor.commit(); 
    // Go into the login/splash (whatever you need).
}