Compare commits
52 Commits
syj_branch
...
master
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,59 @@
|
||||
package net.micode.notes.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
|
||||
|
||||
import net.micode.notes.R;
|
||||
import net.micode.notes.ui.bean.Note;
|
||||
import net.micode.notes.util.ToastUtil;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
public class AddActivity extends Activity {
|
||||
|
||||
private EditText etContent;
|
||||
|
||||
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_add);
|
||||
|
||||
etContent = findViewById(R.id.sf_et_1);
|
||||
|
||||
mNoteDbOpenHelper = new NoteDbOpenHelper(this);
|
||||
|
||||
}
|
||||
|
||||
public void add(View view) {
|
||||
String content = etContent.getText().toString();
|
||||
|
||||
Note note = new Note();
|
||||
note.setContent(content);
|
||||
note.setCreatedTime(getCurrentTimeFormat());
|
||||
|
||||
long row = mNoteDbOpenHelper.insertData(note);
|
||||
if(row != -1){
|
||||
ToastUtil.toastShort(this,"Add Success");
|
||||
this.finish();
|
||||
}else{
|
||||
ToastUtil.toastShort(this,"Add Fail");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private String getCurrentTimeFormat() {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM月dd HH:mm:ss");
|
||||
Date date = new Date();
|
||||
return simpleDateFormat.format(date);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
package net.micode.notes.ui;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
|
||||
import net.micode.notes.R;
|
||||
import net.micode.notes.ui.bean.Note;
|
||||
import net.micode.notes.util.ToastUtil;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class EditActivity extends Activity {
|
||||
|
||||
private Note note;
|
||||
private EditText etContent;
|
||||
|
||||
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_edit);
|
||||
|
||||
etContent = findViewById(R.id.sf_et_2);
|
||||
|
||||
initData();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
Intent intent = getIntent();
|
||||
note = (Note) intent.getSerializableExtra("note");
|
||||
if(note!=null){
|
||||
etContent.setText(note.getContent());
|
||||
}
|
||||
|
||||
mNoteDbOpenHelper = new NoteDbOpenHelper(this);
|
||||
|
||||
}
|
||||
|
||||
public void save(View view) {
|
||||
String content = etContent.getText().toString();
|
||||
|
||||
note.setContent(content);
|
||||
note.setCreatedTime(getCurrentTimeFormat());
|
||||
|
||||
long row = mNoteDbOpenHelper.updateData(note);
|
||||
|
||||
if(row != -1 && row != 0){
|
||||
ToastUtil.toastShort(this,"Edit Success");
|
||||
this.finish();
|
||||
}else{
|
||||
ToastUtil.toastShort(this,"Edit Fail");
|
||||
}
|
||||
}
|
||||
private String getCurrentTimeFormat() {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM月dd HH:mm:ss");
|
||||
|
||||
TimeZone time = TimeZone.getTimeZone("Etc/GMT-8"); //转换为中国时区
|
||||
TimeZone.setDefault(time);
|
||||
Date date = new Date();
|
||||
|
||||
return simpleDateFormat.format(date);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,128 @@
|
||||
package net.micode.notes.ui;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import net.micode.notes.ui.bean.Note;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class NoteDbOpenHelper extends SQLiteOpenHelper {
|
||||
|
||||
private static final String DB_NAME="noteSQLite.db";
|
||||
private static final String TABLE_NAME_NOTE = "note";
|
||||
private static final String CREATE_TABLE_SQL = "create table " + TABLE_NAME_NOTE + " (id integer primary key autoincrement, content text, create_time text)";
|
||||
|
||||
|
||||
public NoteDbOpenHelper(Context context){
|
||||
super(context,DB_NAME,null,1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
|
||||
db.execSQL(CREATE_TABLE_SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
|
||||
}
|
||||
|
||||
public long insertData(Note note){
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
|
||||
ContentValues values = new ContentValues();
|
||||
values.put("content",note.getContent());
|
||||
values.put("create_time",note.getCreatedTime());
|
||||
|
||||
return db.insert(TABLE_NAME_NOTE,null,values);
|
||||
|
||||
}
|
||||
|
||||
public int deleteFromDbById(String id){
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
return db.delete(TABLE_NAME_NOTE,"id like ?", new String[]{id});
|
||||
}
|
||||
|
||||
|
||||
public int updateData(Note note) {
|
||||
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
|
||||
ContentValues values = new ContentValues();
|
||||
|
||||
values.put("content", note.getContent());
|
||||
values.put("create_time", note.getCreatedTime());
|
||||
|
||||
return db.update(TABLE_NAME_NOTE, values, "id like ?", new String[]{note.getId()});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<Note> queryAllFromDb(){
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
List<Note> notelist = new ArrayList<>();
|
||||
|
||||
Cursor cursor = db.query(TABLE_NAME_NOTE,null,null,null,null,null,null);
|
||||
if (cursor != null){
|
||||
|
||||
while (cursor.moveToNext()){
|
||||
String id = cursor.getString(cursor.getColumnIndex("id"));
|
||||
String content = cursor.getString(cursor.getColumnIndex("content"));
|
||||
String createTime = cursor.getString(cursor.getColumnIndex("create_time"));
|
||||
|
||||
Note note = new Note();
|
||||
note.setId(id);
|
||||
note.setContent(content);
|
||||
note.setCreatedTime(createTime);
|
||||
|
||||
notelist.add(note);
|
||||
|
||||
}
|
||||
|
||||
cursor.close();
|
||||
}
|
||||
return notelist;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public List<Note> queryFromDbByContent(String content){
|
||||
if (TextUtils.isEmpty(content)){
|
||||
return queryAllFromDb();
|
||||
}
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
List<Note> noteList = new ArrayList<>();
|
||||
|
||||
Cursor cursor = db.query(TABLE_NAME_NOTE,null,"content like ?",new String[]{"%"+content+"%"},null,null,null);
|
||||
|
||||
if (cursor != null){
|
||||
while (cursor.moveToNext()){
|
||||
|
||||
String id = cursor.getString(cursor.getColumnIndex("id"));
|
||||
String content1 = cursor.getString(cursor.getColumnIndex("content"));
|
||||
String createTime = cursor.getString(cursor.getColumnIndex("create_time"));
|
||||
|
||||
Note note = new Note();
|
||||
note.setId(id);
|
||||
note.setContent(content1);
|
||||
note.setCreatedTime(createTime);
|
||||
noteList.add(note);
|
||||
|
||||
}
|
||||
cursor.close();
|
||||
|
||||
}
|
||||
return noteList;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,168 @@
|
||||
package net.micode.notes.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.Button;
|
||||
|
||||
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.micode.notes.R;
|
||||
import net.micode.notes.ui.adapter.MyAdapter;
|
||||
import net.micode.notes.ui.bean.Note;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class SafeFolderActivity extends Activity {
|
||||
|
||||
private RecyclerView mRecyclerView;
|
||||
private Button mBtnNew;
|
||||
private List<Note> mNotes;
|
||||
private MyAdapter mMyAdapter;
|
||||
|
||||
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_safe_folder);
|
||||
|
||||
initView();
|
||||
initData();
|
||||
initEvent();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
refreshDataFromDb();
|
||||
|
||||
}
|
||||
|
||||
private void refreshDataFromDb() {
|
||||
mNotes = getDataFromDB();
|
||||
mMyAdapter.refreshData(mNotes);
|
||||
}
|
||||
|
||||
private void initEvent() {
|
||||
mMyAdapter = new MyAdapter(this,mNotes);
|
||||
mRecyclerView.setAdapter(mMyAdapter);
|
||||
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||
mRecyclerView.setLayoutManager(linearLayoutManager);
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
mNotes = new ArrayList<>();
|
||||
mNoteDbOpenHelper = new NoteDbOpenHelper(this);
|
||||
|
||||
}
|
||||
|
||||
private List<Note> getDataFromDB() {
|
||||
return mNoteDbOpenHelper.queryAllFromDb();
|
||||
}
|
||||
|
||||
private String getCurrentTimeFormat(){
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM月dd HH:mm:ss");
|
||||
Date date = new Date();
|
||||
return simpleDateFormat.format(date);
|
||||
}
|
||||
|
||||
|
||||
private void initView(){
|
||||
|
||||
mRecyclerView = findViewById(R.id.sf_list);
|
||||
}
|
||||
|
||||
public void NewNotes(View view) {
|
||||
Intent intent = new Intent(SafeFolderActivity.this,AddActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public boolean onCreateOptionsMenu(Menu menu) {
|
||||
//
|
||||
// getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||
// SearchView searchView = (SearchView) menu.findItem(R.id.sf_menu_search).getActionView();
|
||||
//
|
||||
//
|
||||
// searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
// @Override
|
||||
// public boolean onQueryTextSubmit(String query) {
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public boolean onQueryTextChange(String newText) {
|
||||
// mNotes = mNoteDbOpenHelper.queryFromDbByContent(newText);
|
||||
// mMyAdapter.refreshData(mNotes);
|
||||
// return true;
|
||||
// }
|
||||
// });
|
||||
// return super.onCreateOptionsMenu(menu);
|
||||
// }
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.safe, menu);
|
||||
MenuItem x = menu.findItem(R.id.sf_menu_search);
|
||||
if (x.getActionView() != null) {
|
||||
Log.i("-------------","okk");
|
||||
}else{
|
||||
Log.i("-------------","false");
|
||||
}
|
||||
SearchView searchView = (SearchView) menu.findItem(R.id.sf_menu_search).getActionView();
|
||||
|
||||
|
||||
if (searchView != null) {
|
||||
Log.i("=====================","okk");
|
||||
|
||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String s) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextChange(String s) {
|
||||
mNotes = mNoteDbOpenHelper.queryFromDbByContent(s);
|
||||
mMyAdapter.refreshData(mNotes);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}else{
|
||||
Log.i("=====================","false");
|
||||
}
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,134 @@
|
||||
package net.micode.notes.ui.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.micode.notes.R;
|
||||
import net.micode.notes.ui.EditActivity;
|
||||
import net.micode.notes.ui.NoteDbOpenHelper;
|
||||
import net.micode.notes.ui.NoteEditActivity;
|
||||
import net.micode.notes.ui.bean.Note;
|
||||
import net.micode.notes.util.ToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
|
||||
|
||||
private List<Note> mBeanList;
|
||||
private LayoutInflater mLayoutInflater;
|
||||
private Context mContext;
|
||||
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||
|
||||
public MyAdapter(Context context,List<Note> mBeanList){
|
||||
this.mBeanList = mBeanList;
|
||||
this.mContext = context;
|
||||
mLayoutInflater = LayoutInflater.from(mContext);
|
||||
mNoteDbOpenHelper = new NoteDbOpenHelper(mContext);
|
||||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View view = mLayoutInflater.inflate(R.layout.list_item_layout,parent,false);
|
||||
|
||||
MyViewHolder myViewHolder= new MyViewHolder(view);
|
||||
return myViewHolder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
|
||||
|
||||
Note note = mBeanList.get(position);
|
||||
holder.mTvContent.setText(note.getContent());
|
||||
holder.mTvTime.setText(note.getCreatedTime());
|
||||
holder.rlContainer.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
Intent intent = new Intent(mContext, EditActivity.class);
|
||||
intent.putExtra("note",note);
|
||||
mContext.startActivity(intent);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
holder.rlContainer.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
//长按
|
||||
Dialog dialog = new Dialog(mContext,android.R.style.Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth);
|
||||
View view = mLayoutInflater.inflate(R.layout.list_item_dialog_layout, null);
|
||||
|
||||
TextView tvDelete = view.findViewById(R.id.tv_delete);
|
||||
|
||||
|
||||
tvDelete.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int row = mNoteDbOpenHelper.deleteFromDbById(note.getId());
|
||||
if (row > 0){
|
||||
removeData(position);
|
||||
|
||||
ToastUtil.toastShort(mContext,"Delete Success");
|
||||
}else{
|
||||
ToastUtil.toastShort(mContext,"Delete Fail");
|
||||
}
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
dialog.setContentView(view);
|
||||
|
||||
dialog.show();
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
|
||||
return mBeanList.size();
|
||||
}
|
||||
|
||||
public void refreshData(List<Note> notes){
|
||||
this.mBeanList = notes;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void removeData(int pos){
|
||||
mBeanList.remove(pos);
|
||||
notifyItemRemoved(pos);
|
||||
}
|
||||
|
||||
|
||||
class MyViewHolder extends RecyclerView.ViewHolder{
|
||||
|
||||
TextView mTvContent;
|
||||
TextView mTvTime;
|
||||
ViewGroup rlContainer;
|
||||
|
||||
public MyViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
|
||||
this.mTvContent = itemView.findViewById(R.id.tv_content);
|
||||
this.mTvTime = itemView.findViewById(R.id.tv_time);
|
||||
this.rlContainer = itemView.findViewById(R.id.rl_item_container);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package net.micode.notes.ui.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Note implements Serializable {
|
||||
|
||||
private String content;
|
||||
private String createdTime;
|
||||
private String id;
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getCreatedTime() {
|
||||
return createdTime;
|
||||
}
|
||||
|
||||
public void setCreatedTime(String createdTime) {
|
||||
this.createdTime = createdTime;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Note{" +
|
||||
"content='" + content + '\'' +
|
||||
", createdTime='" + createdTime + '\'' +
|
||||
", id='" + id + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
package net.micode.notes.ui;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.biometric.BiometricPrompt;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import net.micode.notes.R;
|
||||
import net.micode.notes.util.ToastUtil;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
public class pwdActivity extends FragmentActivity {
|
||||
|
||||
//private Executor executor;
|
||||
|
||||
|
||||
public Button mBtnpwd;
|
||||
public EditText mEtpwd;
|
||||
public Button mFingerBtn;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_pwd);
|
||||
|
||||
mBtnpwd = findViewById(R.id.btn_pwd);
|
||||
mEtpwd = findViewById(R.id.et_1);
|
||||
mFingerBtn = findViewById(R.id.btn_fingerprint);
|
||||
|
||||
mBtnpwd.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
String pwd = mEtpwd.getText().toString();
|
||||
Intent intent=null;
|
||||
if(pwd.equals("123456")){
|
||||
intent = new Intent(pwdActivity.this,SafeFolderActivity.class);
|
||||
startActivity(intent);
|
||||
}else{
|
||||
ToastUtil.toastShort(pwdActivity.this,String.valueOf(getResources().getString(R.string.pwdwrong)));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
mFingerBtn.setOnClickListener(
|
||||
view->{
|
||||
BiometricPrompt biometricPrompt;
|
||||
BiometricPrompt.PromptInfo promptInfo;
|
||||
Executor executor;
|
||||
executor = ContextCompat.getMainExecutor(this);
|
||||
|
||||
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
|
||||
@Override
|
||||
public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
|
||||
super.onAuthenticationError(errorCode, errString);
|
||||
Toast.makeText(getApplicationContext(), String.valueOf(getResources().getString(R.string.AuthenticationFailed)) + errString, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
|
||||
super.onAuthenticationSucceeded(result);
|
||||
Toast.makeText(getApplicationContext(), String.valueOf(getResources().getString(R.string.AuthenticationSuccess)), Toast.LENGTH_SHORT).show();
|
||||
// Replace the below code with your code to start the SafeFolderActivity
|
||||
// if authentication is successful
|
||||
Intent intent = new Intent(pwdActivity.this, SafeFolderActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthenticationFailed() {
|
||||
super.onAuthenticationFailed();
|
||||
Toast.makeText(getApplicationContext(), String.valueOf(getResources().getString(R.string.AuthenticationFailed)), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
promptInfo = new BiometricPrompt.PromptInfo.Builder()
|
||||
.setTitle(String.valueOf(getResources().getString(R.string.BioAuth)))
|
||||
.setSubtitle(String.valueOf(getResources().getString(R.string.LogUseBio)))
|
||||
.setNegativeButtonText(String.valueOf(getResources().getString(R.string.datetime_dialog_cancel)))
|
||||
.build();
|
||||
|
||||
|
||||
biometricPrompt.authenticate(promptInfo);
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
package net.micode.notes.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
public class SpfUtil {
|
||||
|
||||
private static String SPF_NAME = "noteSpf";
|
||||
|
||||
public static void saveString(Context context, String key, String value) {
|
||||
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor edit = spf.edit();
|
||||
edit.putString(key, value);
|
||||
edit.apply();
|
||||
}
|
||||
|
||||
public static String getString(Context context, String key) {
|
||||
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||
return spf.getString(key, "");
|
||||
}
|
||||
|
||||
public static void saveInt(Context context, String key, int value) {
|
||||
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor edit = spf.edit();
|
||||
edit.putInt(key, value);
|
||||
edit.apply();
|
||||
}
|
||||
|
||||
public static int getInt(Context context, String key) {
|
||||
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||
return spf.getInt(key, -1);
|
||||
}
|
||||
|
||||
public static int getIntWithDefault(Context context, String key, int defValue) {
|
||||
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||
return spf.getInt(key, defValue);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package net.micode.notes.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class ToastUtil {
|
||||
|
||||
public static void toastShort(Context context, String msg) {
|
||||
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public static void toastLong(Context context, String msg) {
|
||||
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
|
||||
</vector>
|
||||
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".ui.AddActivity">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/sf_et_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/edit_yellow"
|
||||
android:gravity="top"
|
||||
android:padding="10dp"
|
||||
android:maxLength="300"
|
||||
android:layout_weight="1"
|
||||
android:textColor="#070707"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/sf_btn_add"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="20dp"
|
||||
android:textSize="25sp"
|
||||
android:text="Add"
|
||||
android:onClick="add"
|
||||
/>
|
||||
</LinearLayout>
|
||||
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".ui.EditActivity">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/sf_et_2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/edit_yellow"
|
||||
android:gravity="top"
|
||||
android:padding="10dp"
|
||||
android:maxLength="300"
|
||||
android:layout_weight="1"
|
||||
android:textColor="#070707"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/sf_btn_add2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="20dp"
|
||||
android:textSize="25sp"
|
||||
android:text="Save"
|
||||
android:onClick="save"
|
||||
/>
|
||||
</LinearLayout>
|
||||
@ -0,0 +1,43 @@
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="20dp"
|
||||
android:background="@drawable/list_background"
|
||||
android:gravity="center|center_horizontal|center_vertical"
|
||||
tools:context=".ui.pwdActivity">
|
||||
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:gravity="center"
|
||||
android:hint="@string/inputPassword"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:padding="10dp"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="20dp"/>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_pwd"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="50dp"
|
||||
android:text="@string/open"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="20dp"/>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_fingerprint"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="50dp"
|
||||
android:text="@string/finger"/>
|
||||
</LinearLayout>
|
||||
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
tools:context=".ui.SafeFolderActivity"
|
||||
android:background="@drawable/list_background">
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/sf_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="500dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/sf_btn_new_note"
|
||||
android:background="@drawable/new_note"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:layout_gravity="bottom"
|
||||
android:onClick="NewNotes"
|
||||
/>
|
||||
</FrameLayout>
|
||||
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="20dp"
|
||||
>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_delete"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/text_font_size_large"
|
||||
android:textColor="#000000"
|
||||
android:text="Delete"
|
||||
android:gravity="center_horizontal"/>
|
||||
|
||||
</LinearLayout>
|
||||
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/rl_item_container"
|
||||
android:padding="25dp"
|
||||
android:background="@drawable/list_yellow_down"
|
||||
>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginRight="0dp"
|
||||
android:layout_toLeftOf="@id/tv_time"
|
||||
android:ellipsize="end"
|
||||
android:gravity="left"
|
||||
android:maxLines="1"
|
||||
android:text="你好"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<!-- <TextView-->
|
||||
<!-- android:id="@+id/tv_content"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_below="@id/tv_title"-->
|
||||
<!-- android:layout_marginTop="5dp"-->
|
||||
<!-- android:ellipsize="end"-->
|
||||
<!-- android:maxLines="2"-->
|
||||
<!-- android:text="你好拉拉拉拉谁在用琵琶弹奏一曲东风破"-->
|
||||
<!-- android:textSize="16sp" />-->
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@id/tv_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:gravity="center"
|
||||
android:text="2021-5-30 22:40:34"
|
||||
android:textSize="14sp" />
|
||||
</RelativeLayout>
|
||||
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
|
||||
<item
|
||||
android:id="@+id/sf_menu_search"
|
||||
android:title="搜索"
|
||||
app:showAsAction="always"
|
||||
android:icon="@drawable/ic_baseline_search_24"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView$SearchAutoComplete" />
|
||||
|
||||
</menu>
|
||||
Loading…
Reference in new issue