开源安卓项目《Fly密码管理》适合毕设、课设、自用
前言:一直想开发一款储存账号密码的app,看了一下市面上密码管理的app,说实话不太敢用,都有后台把你的账号密码都存储在他们的后台服务器里以及各种五花八门的广告,SO,我得这款APP,完全没有联网功能、也没有任何获取隐私的权限、只需要你放心把密码存在这个APP上,然后可以自己设置一个启动密码。完完全全的自己掌控的APP。
1.启动页面
核心代码:就是一个普通的启动倒计时页面
2.登录页面
说明:第一次启动默认密码是0207,后面可以自己更改成自己的密码
实现输入密码的核心代码:
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String data3 = tv3.getText().toString().trim();
String data2 = tv2.getText().toString().trim();
String data1 = tv1.getText().toString().trim();
if (!StringUtils.isEmpty(data3) && !StringUtils.isEmpty(data2) && !StringUtils.isEmpty(data1)){
tv3.setText("");
}
if (StringUtils.isEmpty(data3) && !StringUtils.isEmpty(data2) && !StringUtils.isEmpty(data1)){
tv2.setText("");
}
if (StringUtils.isEmpty(data3) && StringUtils.isEmpty(data2) && !StringUtils.isEmpty(data1)){
tv1.setText("");
}
if (StringUtils.isEmpty(data3) && StringUtils.isEmpty(data2) && StringUtils.isEmpty(data1)){
ToastUtils.showToast(CheckActivity.this,"请输入密码!");
}
}
});
private void setText(int i) {
String data1 = tv1.getText().toString().trim();
String data2 = tv2.getText().toString().trim();
String data3 = tv3.getText().toString().trim();
String data4 = tv4.getText().toString().trim();
Log.e("--i--",i+"");
Log.e("--data1--",data1+"");
Log.e("--data2--",data2+"");
Log.e("--data3--",data3+"");
Log.e("--data4--",data4+"");
if (StringUtils.isEmpty(data1)){
tv1.setText(i+"");
}
if (!StringUtils.isEmpty(data1) && StringUtils.isEmpty(data2)){
tv2.setText(i+"");
}
if (!StringUtils.isEmpty(data2) && StringUtils.isEmpty(data3)){
tv3.setText(i+"");
}
if (!StringUtils.isEmpty(data3) && StringUtils.isEmpty(data4)){
tv4.setText(i+"");
strPwd = PrefUtils.getString("pwd","0207",CheckActivity.this);
String pwd = data1+data2+data3+i;
if (pwd.equals(strPwd)){
Intent intent = new Intent(CheckActivity.this,MainActivity.class);
startActivity(intent);
finish();
}else {
ToastUtils.showToast(CheckActivity.this,"密码输入错误!");
tv1.setText("");
tv2.setText("");
tv3.setText("");
tv4.setText("");
}
}
}
3.首页
说明:包括账户密码的分离,一个搜索框,需要注意的是在添加一个账号密码之后,用eventbus来发送消息,更新账户密码的数量。
核心代码:
//eventbus更新数据
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGetMessage(String str){
if (str.equals("page1APP")){
Log.e("---page1APP--",str);
updateUIcount("APP",tv_app);
}
if (str.equals("page1网站")){
Log.e("---page1网站--",str);
updateUIcount("网站",tv_web);
}
if (str.equals("page1游戏")){
Log.e("---page1游戏--",str);
updateUIcount("游戏",tv_game);
}
if (str.equals("page1生活")){
Log.e("---page1生活--",str);
updateUIcount("生活",tv_life);
}
if (str.equals("page1工作")){
Log.e("---page1工作--",str);
updateUIcount("工作",tv_work);
}
if (str.equals("page1银行卡")){
Log.e("---page1银行卡--",str);
updateUIcount("银行卡",tv_bank);
}
if (str.equals("page1其他")){
Log.e("---page1其他--",str);
updateUIcount("其他",tv_other);
}
}
private void updateUIcount(final String cate, final TextView tv) {
new Thread(new Runnable() {
@Override
public void run() {
final long count = mDao.getCountByCate(cate);
UIUtils.runOnUIThread(new Runnable() {
@Override
public void run() {
tv.setText("("+count+")");
}
});
}
}).start();
}
4.账号密码列表
说明:在这个页面可以进行长按删除,也可以进行清空数据,也可以进行添加账户密码,注意在所有这个栏目里面不支持删除和清空操作。
核心代码:
//从数据库获取数据
private void getDataFromSQl() {
mDao = AccountDao.getInstance(this);
mList = mDao.getListAccByCate(mStrCate);
if (mList.size() == 0){
tvEmpty.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.INVISIBLE);
}else {
tvEmpty.setVisibility(View.INVISIBLE);
recyclerView.setVisibility(View.VISIBLE);
}
}
ConfirmDialog.showDialog(ContentActivity.this, "删除"+title, "你确定要删除"+title+"吗?", new ConfirmDialog.OnConfirmListener() {
@Override
public void confirm() {
String uniquekey = mList.get(p).unkey;
mDao.deleteByUniquekey(uniquekey);
mList.remove(p);
if (mList.size() == 0){
tvEmpty.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.INVISIBLE);
}else {
tvEmpty.setVisibility(View.INVISIBLE);
recyclerView.setVisibility(View.VISIBLE);
mAdapter.notifyDataSetChanged();
}
EventBus.getDefault().post("page1"+cate);
}
@Override
public void cancel() {
}
});
private void initDeleteAll() {
tvDeleteAll = findViewById(R.id.tv_delete_all);
tvDeleteAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mStrCate.equals("所有")){
ToastUtils.showToast(ContentActivity.this,"不允许清空操作...");
return;
}
if (mDao.isEmpty(mStrCate)){
ToastUtils.showToast(ContentActivity.this,"已经为空了...");
return;
}
ConfirmDialog.showDialog(ContentActivity.this, "情空" + mStrCate, "你确定清空" + mStrCate + "吗?", new ConfirmDialog.OnConfirmListener() {
@Override
public void confirm() {
mDao.deleteByCate(mStrCate);
tvEmpty.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.INVISIBLE);
EventBus.getDefault().post("page1"+mStrCate);
}
@Override
public void cancel() {
}
});
}
});
}
5.账号密码详情
修改页面,修改之后进行提交即可
核心代码:
tvUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String data = tvUpdate.getText().toString().trim();
if (data.equals("修改")) {
tvUpdate.setText("提交");
etAcc.setVisibility(View.VISIBLE);
etOther.setVisibility(View.VISIBLE);
etPwd.setVisibility(View.VISIBLE);
tvAcc.setVisibility(View.GONE);
tvPwd.setVisibility(View.GONE);
tvOther.setVisibility(View.GONE);
etPwd.setText(mStrPwd);
etOther.setText(mStrOther);
etAcc.setText(mStrAcc);
} else if (data.equals("提交")) {
tvUpdate.setText("修改");
etAcc.setVisibility(View.GONE);
etOther.setVisibility(View.GONE);
etPwd.setVisibility(View.GONE);
tvAcc.setVisibility(View.VISIBLE);
tvPwd.setVisibility(View.VISIBLE);
tvOther.setVisibility(View.VISIBLE);
mStrAcc = etAcc.getText().toString().trim();
mStrOther = etOther.getText().toString().trim();
mStrPwd = etPwd.getText().toString().trim();
tvOther.setText(mStrOther);
tvAcc.setText(mStrAcc);
tvPwd.setText(mStrPwd);
mDao.updateByUniquekey(mStrUnkey, mStrAcc, mStrPwd, mStrOther, getNowTime());
EventBus.getDefault().post("page2");
}
}
});
6.添加账户密码
核心代码
tvOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String strAcc = etAcc.getText().toString().trim();
String strPwd = etPwd.getText().toString().trim();
String strOther = etOther.getText().toString().trim();
String strTitle = etTitle.getText().toString().trim();
if (!StringUtils.isEmpty(strAcc) && !StringUtils.isEmpty(strPwd) &&!StringUtils.isEmpty(strTitle)){
mDao.addAccont(strTitle+getNowTime(),mStrCate,strTitle,strAcc,strPwd,strOther,getNowTime());
etAcc.setText("");
etPwd.setText("");
etOther.setText("");
etTitle.setText("");
EventBus.getDefault().post("page1"+mStrCate);
}else {
ToastUtils.showToast(AddActivity.this,"请规范输入!!!");
}
}
});
7.账号密码搜索
核心代码:
tvSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String title = etContent.getText().toString().trim();
if (StringUtils.isEmpty(title)) {
ToastUtils.showToast(SearchActivity.this, "请规范输入!!!");
return;
}
pb.setVisibility(View.VISIBLE);
rv.setVisibility(View.INVISIBLE);
UIUtils.getHandler().postDelayed(new Runnable() {
@Override
public void run() {
pb.setVisibility(View.INVISIBLE);
rv.setVisibility(View.VISIBLE);
mList = mDao.findByTitle(title);
if (mList == null) {
ToastUtils.showToast(SearchActivity.this, "请换一个关键词试试");
} else {
//关闭软键盘
InputMethodManager imm = (InputMethodManager) SearchActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(SearchActivity.this.getCurrentFocus().getWindowToken(), 0);
initRv();
}
}
}, 300);
}
});
8.侧滑栏页面
9.设置启动密码
APP下载《Fly密码管理安卓APP》
完整代码下载《Fly密码管理APP安卓完整代码》