parent
ac93025ac2
commit
49b9af0df4
@ -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("123")){
|
||||
intent = new Intent(pwdActivity.this,SafeFolderActivity.class);
|
||||
startActivity(intent);
|
||||
}else{
|
||||
ToastUtil.toastShort(pwdActivity.this,String.valueOf(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(R.string.AuthenticationFailed) + errString, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
|
||||
super.onAuthenticationSucceeded(result);
|
||||
Toast.makeText(getApplicationContext(), String.valueOf(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(R.string.AuthenticationFailed), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
promptInfo = new BiometricPrompt.PromptInfo.Builder()
|
||||
.setTitle(String.valueOf(R.string.BioAuth))
|
||||
.setSubtitle(String.valueOf(R.string.LogUseBio))
|
||||
.setNegativeButtonText(String.valueOf(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,37 @@
|
||||
<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="50dp"
|
||||
android:gravity="center"
|
||||
android:hint="@string/inputPassword"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_pwd"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/open" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_fingerprint"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
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