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
Post a Comment