App မွာ Password ထားသုံးခ်င္ရင္


============================
ခုစနစ္မွာ...
#main.xml ဖိုင္မလိုပါ
#Database ထဲမွာ User Name နဲ႔ Password ကုိမွတ္ထားပါတယ္။
#App ထဲမွာပဲ... Login, Sign up, Change Password လုပ္ႏိုင္ပါတယ္...
#User Name နဲ႔ Password ကုိ Database နဲ႔တိုက္စစ္လို႔ မမွန္ရင္ Activity. မပြင့္ပါဘူး။ မွန္ရင္ပြင့္လာပါမယ္...

လိုရင္ကုဒ္ထားၾကဖို႔ပါ...
Java ဖိုင္ ၆ ဖိုင္ထည့္ဖို႔လိုပါတယ္...

( 1 ) DataBaseHelper.java
=======================
package com.ktr.pw;

import android.content.*;
import android.database.sqlite.*;
import android.database.sqlite.SQLiteDatabase.*;

public class DataBaseHelper extends SQLiteOpenHelper {
    public DataBaseHelper(Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase _db) {
        _db.execSQL(LoginDataBaseAdapter.DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {
        _db.execSQL("DROP TABLE IF EXISTS " + "TEMPLATE");
        onCreate(_db);
    }
}

( 2 ) LoginDataBaseAdapter.java
============================
package com.ktr.pw;

import android.content.*;
import android.database.*;
import android.database.sqlite.*;

public class LoginDataBaseAdapter {
    static final String DATABASE_NAME = "login.db";
    static final int DATABASE_VERSION = 1;
    public static final int NAME_COLUMN = 1;
    static final String DATABASE_CREATE = "create table " + "LOGIN" +
"( " + "ID" + " integer primary key autoincrement," + "USERNAME  text,PASSWORD text); ";
    public SQLiteDatabase db;
    private final Context context;
    private DataBaseHelper dbHelper;

    public LoginDataBaseAdapter(Context _context) {
        context = _context;
        dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public LoginDataBaseAdapter open() throws SQLException {
        db = dbHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        db.close();
    }

    public SQLiteDatabase getDatabaseInstance() {
        return db;
    }

    public void insertEntry(String userName, String password) {
        ContentValues newValues = new ContentValues();
        newValues.put("USERNAME", userName);
        newValues.put("PASSWORD", password);

        db.insert("LOGIN", null, newValues);
       
    }

    public int deleteEntry(String UserName) {
        String where = "USERNAME=?";
        int numberOFEntriesDeleted = db.delete("LOGIN", where, new String[]{UserName});
        return numberOFEntriesDeleted;
    }

    public String getSinlgeEntry(String userName) {
        Cursor cursor = db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null);
        if (cursor.getCount() < 1)
        {
            cursor.close();
            return "NOT EXIST";
        }
        cursor.moveToFirst();
        String password = cursor.getString(cursor.getColumnIndex("PASSWORD"));
        cursor.close();
        return password;
    }

    public void updateEntry(String userName, String password) {
        ContentValues updatedValues = new ContentValues();
        updatedValues.put("USERNAME", userName);
        updatedValues.put("PASSWORD", password);
        String where = "USERNAME = ?";
        db.update("LOGIN", updatedValues, where, new String[]{userName});
    }
}

( 3 ) LoginActivity.java
====================
package com.ktr.pw;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.text.method.PasswordTransformationMethod;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.app.*;

public class LoginActivity extends Activity implements View.OnClickListener {
    LoginDataBaseAdapter loginDataBaseAdapter;
    private Button btnSignIn;
    private LinearLayout ll;
    private TextView tvTitle, tvSignUp;
    private EditText etPassword, etUserName;
    private SharedPreferences sharedpreferences;
    public static final String MyPREFERENCES = "MyPrefs";
    public static final int iSignUp = 4, iSignIn = 5;

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

        // create a instance of SQLite Database
        loginDataBaseAdapter = new LoginDataBaseAdapter(this);
        loginDataBaseAdapter = loginDataBaseAdapter.open();

        initViews();
        setViews();

        Intent i = getIntent();
        String saUsername = i.getStringExtra("username");
        String saPassword = i.getStringExtra("password");

        etUserName.setText(saUsername);
        etPassword.setText(saPassword);

        sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

        setProperties();

        btnSignIn.setId(iSignIn);
        tvSignUp.setId(iSignUp);

        btnSignIn.setOnClickListener(this);
        tvSignUp.setOnClickListener(this);

        setContentView(ll);
    }

    private void setProperties() {
        tvTitle.setText("KTR");
        tvTitle.setTextSize(30);
        tvTitle.setGravity(Gravity.CENTER);

        tvSignUp.setText("Not Registered ? Register Now !");
        tvSignUp.setTextColor(Color.rgb(255, 64, 129));
        tvSignUp.setGravity(Gravity.CENTER);

        etUserName.setHint("User Name");
        //etUserName.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_launcher), null);

        etPassword.setHint("Password");
        etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
        //etPassword.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_key), null);

        btnSignIn.setText("Submit");
        btnSignIn.setTextColor(Color.WHITE);
        btnSignIn.setBackgroundColor(Color.rgb(63, 81, 181));
    }

    private void setViews() {
        LinearLayout.LayoutParams dimesions = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        ll.setLayoutParams(dimesions);
        ll.setGravity(Gravity.CENTER);
        ll.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams viewDimensions = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        viewDimensions.setMargins(80, 0, 80, 40);

        ll.addView(tvTitle, viewDimensions);
        ll.addView(etUserName, viewDimensions);
        ll.addView(etPassword, viewDimensions);
        ll.addView(btnSignIn, viewDimensions);
        ll.addView(tvSignUp);
    }

    private void initViews() {
        ll = new LinearLayout(this);
        tvTitle = new TextView(this);
        tvSignUp = new TextView(this);
        etPassword = new EditText(this);
        etUserName = new EditText(this);
        btnSignIn = new Button(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        loginDataBaseAdapter.close();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case iSignUp:
             
                Intent intentSignUP = new Intent(getApplicationContext(), SignUPActivity.class);
                startActivity(intentSignUP);
                break;
            case iSignIn:
                singInProcess();
                break;
        }
    }

    private void singInProcess() {
        SharedPreferences.Editor editor = sharedpreferences.edit();

        String userName = etUserName.getText().toString().trim();
        String password = etPassword.getText().toString().trim();

        String storedPassword = loginDataBaseAdapter.getSinlgeEntry(userName);

        if (password.equals(storedPassword)) {
            Toast.makeText(this, "Congrats: Login Successfull", Toast.LENGTH_SHORT).show();
            editor.putString("username", userName);
            editor.putString("password", password);
            editor.commit();
            Intent intent = new Intent(this, ProfileActivity.class);
            intent.putExtra("username", etUserName.getText().toString().trim());
            intent.putExtra("password", etPassword.getText().toString().trim());
            finish();
            startActivity(intent);
        } else {
            Toast.makeText(this, "User Name or Password does not match", Toast.LENGTH_SHORT).show();
        }
    }
}

( 4 ) ProfileActivity.java
====================
package com.ktr.pw;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.app.*;

public class ProfileActivity extends Activity implements View.OnClickListener {
    LoginDataBaseAdapter loginDataBaseAdapter;
    private ImageView ivImage;
    private LinearLayout ll, ll2;
    private TextView tvUserName, tvError;
    private Button btnSignOut, btnChangePassword;
    private EditText etOldPassword, etNewPassword;
    private AlertDialog dialog;
    private SharedPreferences sharedpreferences;
    public static final String MyPREFERENCES = "MyPrefs", USERNAME = "username";
    public static final int iSignOut = 1, iChangePassword = 2;

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

        loginDataBaseAdapter = new LoginDataBaseAdapter(this);
        loginDataBaseAdapter = loginDataBaseAdapter.open();

        initViews();
        setDimesions();
        setProperties();

        btnChangePassword.setId(iChangePassword);
        btnSignOut.setId(iSignOut);

        btnChangePassword.setOnClickListener(this);
        btnSignOut.setOnClickListener(this);

        setContentView(ll);
    }

    private void setProperties() {
        //ivImage.setImageResource();

        sharedpreferences = getBaseContext().getSharedPreferences(MyPREFERENCES, 0);
        String loadUsername = sharedpreferences.getString(USERNAME, null);
        tvUserName.setText("Welcome:\u0020" + loadUsername);
        tvUserName.setTextSize(21);
        tvUserName.setTextColor(Color.rgb(255, 64, 129));
        tvUserName.setGravity(Gravity.CENTER);

        btnChangePassword.setText("Change Password");
        btnChangePassword.setTextColor(Color.WHITE);
        btnChangePassword.setBackgroundColor(Color.rgb(63, 81, 181));

        btnSignOut.setText("Logout");
        btnSignOut.setTextColor(Color.WHITE);
        btnSignOut.setBackgroundColor(Color.rgb(63, 81, 181));
    }

    private void setDimesions() {
        LinearLayout.LayoutParams dimesions = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        ll.setLayoutParams(dimesions);
        ll.setGravity(Gravity.CENTER);
        ll.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams viewDimensions = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        viewDimensions.setMargins(80, 30, 80, 0);

        ll.addView(ivImage, viewDimensions);
        ll.addView(tvUserName, viewDimensions);
        ll.addView(btnChangePassword, viewDimensions);
        ll.addView(btnSignOut, viewDimensions);
    }

    private void initViews() {
        ll = new LinearLayout(this);
        ivImage = new ImageView(this);
        tvUserName = new TextView(this);
        btnSignOut = new Button(this);
        btnChangePassword = new Button(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        loginDataBaseAdapter.close();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case iSignOut:
                signOut();
                break;
            case iChangePassword:
                showDialog();
                break;
        }
    }

    private void signOut() {
        SharedPreferences settings = ProfileActivity.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
        settings.edit().clear().commit();
        Intent i = new Intent(ProfileActivity.this, LoginActivity.class);
        finish();
        startActivity(i);
    }

    private void showDialog() {
        ll2 = new LinearLayout(this);
        etOldPassword = new EditText(this);
        etNewPassword = new EditText(this);
        tvError = new TextView(this);

        ll2.setGravity(Gravity.CENTER);
        ll2.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams viewDimensions2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        viewDimensions2.setMargins(40, 30, 40, 0);

        etOldPassword.setHint("Old Password");
        //etOldPassword.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_key), null);
        etNewPassword.setHint("New Password");
        //etNewPassword.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_key), null);
        tvError.setGravity(Gravity.CENTER_VERTICAL);

        ll2.addView(etOldPassword, viewDimensions2);
        ll2.addView(etNewPassword, viewDimensions2);
        ll2.addView(tvError, viewDimensions2);

        AlertDialog.Builder builder = new AlertDialog.Builder(ProfileActivity.this);

        builder.setView(ll2);
        builder.setTitle("Change Password");
        builder.setPositiveButton("Change Password", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

}
});
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
        dialog = builder.create();
        dialog.show();
        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String oldPassword = etOldPassword.getText().toString().trim();
String newPassword = etNewPassword.getText().toString().trim();
sharedpreferences = getBaseContext().getSharedPreferences(MyPREFERENCES, 0);
String loadUsername = sharedpreferences.getString(USERNAME, null);
String storedPassword = loginDataBaseAdapter.getSinlgeEntry(loadUsername);
System.out.println("Value :::" + storedPassword);
if (!(oldPassword.isEmpty() && newPassword.isEmpty())) {
if (oldPassword.matches(storedPassword)) {
loginDataBaseAdapter.updateEntry(loadUsername, newPassword);
Toast.makeText(ProfileActivity.this, "Successfully Changed", Toast.LENGTH_SHORT).show();
dialog.dismiss();
} else {
tvError.setText("Password Not Match");
//tvError.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.ic_error), null, null, null);
}
} else {
tvError.setText("Empty");
//tvError.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.ic_error), null, null, null);
}
}
});
    }
}

( 5 ) SignUPActivity.java
=====================
package com.ktr.pw;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.method.PasswordTransformationMethod;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.app.*;

public class SignUPActivity extends Activity implements View.OnClickListener {
    private LinearLayout ll;
    private EditText etUserName, etPassword, etConfirmPassword;
    private Button btnCreateAccount;
    private TextView tvTitle, tvSignIn;
    public static final int iSignUp = 4, iSignIn = 5;
    LoginDataBaseAdapter loginDataBaseAdapter;

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

        loginDataBaseAdapter = new LoginDataBaseAdapter(this);
        loginDataBaseAdapter = loginDataBaseAdapter.open();

        initViews();
        setViews();
        setProperties();

        btnCreateAccount.setId(iSignUp);
        tvSignIn.setId(iSignIn);

        btnCreateAccount.setOnClickListener(this);
        tvSignIn.setOnClickListener(this);

        setContentView(ll);
    }

    private void setProperties() {
        tvTitle.setText("KTR");
        tvTitle.setTextSize(30);
        tvTitle.setGravity(Gravity.CENTER);

        tvSignIn.setText("Already Registered ? Login Now !");
        tvSignIn.setTextColor(Color.rgb(255, 64, 129));
        tvSignIn.setGravity(Gravity.CENTER);

        etUserName.setHint("User Name");
        //etUserName.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_user), null);

        etPassword.setHint("Password");
        etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
        //etPassword.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_key), null);

        etConfirmPassword.setHint("Confirm Password");
        etConfirmPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
        //etConfirmPassword.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.ic_key), null);

        btnCreateAccount.setText("Register");
        btnCreateAccount.setTextColor(Color.WHITE);
        btnCreateAccount.setBackgroundColor(Color.rgb(63, 81, 181));
    }

    private void setViews() {
        LinearLayout.LayoutParams dimesions = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        ll.setLayoutParams(dimesions);
        ll.setGravity(Gravity.CENTER);
        ll.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams viewDimensions = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        viewDimensions.setMargins(80, 0, 80, 40);

        ll.addView(tvTitle, viewDimensions);
        ll.addView(etUserName, viewDimensions);
        ll.addView(etPassword, viewDimensions);
        ll.addView(etConfirmPassword, viewDimensions);
        ll.addView(btnCreateAccount, viewDimensions);
        ll.addView(tvSignIn);
    }

    private void initViews() {
        ll = new LinearLayout(this);
        tvTitle = new TextView(this);
        tvSignIn = new TextView(this);
        etPassword = new EditText(this);
        etConfirmPassword = new EditText(this);
        etUserName = new EditText(this);
        btnCreateAccount = new Button(this);
    }

    @Override
    protected void onDestroy() {
      
        super.onDestroy();

        loginDataBaseAdapter.close();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case iSignIn:
                Intent intent = new Intent(this, LoginActivity.class);
                startActivity(intent);
                break;
            case iSignUp:
                registerProcess();
                break;
        }
    }

    private void registerProcess() {
        String userName = etUserName.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        String confirmPassword = etConfirmPassword.getText().toString().trim();

        if (userName.equals("") || password.equals("") || confirmPassword.equals("")) {
            Toast.makeText(this, "Field Vaccant", Toast.LENGTH_LONG).show();
            return;
        }
     
        if (!password.equals(confirmPassword)) {
            Toast.makeText(this, "Password does not match", Toast.LENGTH_LONG).show();
            return;
        } else {
            loginDataBaseAdapter.insertEntry(userName, password);
            Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show();
            Intent i = new Intent(this, LoginActivity.class);
            i.putExtra("username", etUserName.getText().toString().trim());
            i.putExtra("password", etPassword.getText().toString().trim());
            finish();
            startActivity(i);
        }
    }
}

( 6 ) MainActivity.java
===================
package com.ktr.pw;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.app.*;

public class MainActivity extends Activity {
    private LinearLayout ll;
    private SharedPreferences sharedPreferences;
    public static final String MyPREFERENCES = "MyPrefs";

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

        ll = new LinearLayout(this);

        LinearLayout.LayoutParams dimesions = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        ll.setLayoutParams(dimesions);
        ll.setGravity(Gravity.CENTER);
        ll.setOrientation(LinearLayout.VERTICAL);

        sharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

        initActivity();

        setContentView(ll);
    }

    private void initActivity() {
        String Uname = sharedPreferences.getString("username", "");
        String Pwd = sharedPreferences.getString("password", "");

        if (Uname.equals("") && Pwd.equals("")) {
            Intent i = new Intent(this, LoginActivity.class);
            finish();
            startActivity(i);
        } else {
            Intent i = new Intent(this, ProfileActivity.class);
            finish();
            startActivity(i);
        }
    }
}

AndroidManifest.xml ထဲမွာ
========================
<activity android:name=".LoginActivity" />
        <activity android:name=".SignUPActivity" />
        <activity android:name=".ProfileActivity" />

😊

Comments

Popular posts from this blog

Firebase (2)

Story Book Project (8)

Story Book Project (7)