diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java index efc67cf..b6364c0 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java @@ -53,7 +53,7 @@ public class FileUtils { Message msg = new Message(); if (!zipFile.isValidZipFile()){ data.putString("error","压缩包已损坏"); - msg.what = FileHandler.ERROR; + msg.what = FileHandler.FUNCTION_ERROR; msg.setData(data); handler.sendMessage(msg); } diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/QueryPWDDialogFragment.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/QueryPWDDialogFragment.java new file mode 100644 index 0000000..2b2782d --- /dev/null +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/QueryPWDDialogFragment.java @@ -0,0 +1,113 @@ +package com.thankvinci.CloudKey.Fragment; + +import android.annotation.SuppressLint; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.ProgressBar; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.RequiresApi; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; + +import com.thankvinci.CloudKey.Files.FileUtils; +import com.thankvinci.CloudKey.NetUtils.NetCheck; +import com.thankvinci.CloudKey.NetUtils.NetHandler; +import com.thankvinci.CloudKey.NetUtils.NetThread; +import com.thankvinci.CloudKey.R; +import com.thankvinci.CloudKey.Utils.MyUtils; + +public class QueryPWDDialogFragment extends DialogFragment { + + private Fragment fragment; + + private TextView copy2clip,getPWD,clear; + private EditText md5_edit,pwd_edit; + private ProgressBar progressBar; + + private AlertDialog alertDialog; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return super.onCreateView(inflater, container, savedInstanceState); + + } + public AlertDialog onCreateDialog(Bundle savedInstanceState){ + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + LayoutInflater inflater = requireActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.query_pwd_dialog,null); + copy2clip = view.findViewById(R.id.copytoclip); + getPWD = view.findViewById(R.id.getPWD); + copy2clip.setClickable(false); + clear = view.findViewById(R.id.clear); + + + md5_edit = view.findViewById(R.id.md5_edit); + pwd_edit = view.findViewById(R.id.pwd_edit); + + progressBar = view.findViewById(R.id.progress_bar); + progressBar.setVisibility(View.INVISIBLE); + + builder.setView(view).setTitle("查询密码").setNegativeButton("取消",null); + alertDialog = builder.create(); + return alertDialog; + } + @Override + public void onStart(){ + super.onStart(); + alertDialog.setCanceledOnTouchOutside(false); + fragment = this; + copy2clip.setOnClickListener(new View.OnClickListener() { + @RequiresApi(api = Build.VERSION_CODES.O) + @Override + public void onClick(View v) { + if (copy2clip.getFocusable() == TextView.FOCUSABLE){ + MyUtils.copyToClipboard(getActivity(),pwd_edit.getText().toString()); + Toast.makeText(v.getContext(),"已复制到剪贴板",Toast.LENGTH_SHORT).show(); + } + } + }); + clear.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + pwd_edit.setText(""); + md5_edit.setText(""); + } + }); + getPWD.setOnClickListener(new View.OnClickListener() { + @RequiresApi(api = Build.VERSION_CODES.M) + @Override + public void onClick(View v) { + String md5 = md5_edit.getText().toString(); + if(md5.length() != 32){ + Toast.makeText(v.getContext(),"MD5码不合法",Toast.LENGTH_SHORT).show(); + return ; + } + if("无网络".equals(NetCheck.getNetStatus(v.getContext()))){ + Toast.makeText(getActivity(),"获取失败,当前网络不畅通"+NetCheck.getNetStatus(v.getContext()),Toast.LENGTH_SHORT).show(); + return ; + } + StringBuilder builder = new StringBuilder(); + builder.append("http://1.14.144.194:8080/cscp/cscp?para0=query¶1="); + builder.append(md5); + String url = builder.toString(); + Handler handler = new NetHandler(getActivity(),fragment); + Thread nt = new Thread(new NetThread(handler,url)); + nt.start(); + } + }); + } + public void setPwd(String pwd){ + pwd_edit.setText(pwd); + pwd_edit.setFocusable(false); + copy2clip.setClickable(true); + copy2clip.setFocusable(true); + } +} diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/NetUtils/NetHandler.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/NetUtils/NetHandler.java index 84594b2..d9d1919 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/NetUtils/NetHandler.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/NetUtils/NetHandler.java @@ -7,11 +7,14 @@ import android.widget.Toast; import androidx.fragment.app.Fragment; +import com.thankvinci.CloudKey.Fragment.QueryPWDDialogFragment; import com.thankvinci.CloudKey.Fragment.UnzipDialogFragment; import com.thankvinci.CloudKey.MainActivity; public class NetHandler extends Handler { + public final static int FUNCTION_GET_MD5 = 0; + public final static int FUNCTION_ERROR = -1; private Activity activity; private Fragment fragment; public NetHandler(Activity activity,Fragment fragment){ @@ -22,14 +25,18 @@ public class NetHandler extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ - case 0: + case FUNCTION_GET_MD5: if (fragment instanceof UnzipDialogFragment){ ((UnzipDialogFragment)fragment).setPasswd(msg.getData().getString("key")); ((UnzipDialogFragment)fragment).setFromSQL(true); Toast.makeText(activity,"获取成功",Toast.LENGTH_SHORT).show(); } + if (fragment instanceof QueryPWDDialogFragment){ + ((QueryPWDDialogFragment)fragment).setPwd(msg.getData().getString("key")); + Toast.makeText(activity,"获取成功",Toast.LENGTH_SHORT).show(); + } break; - case -1: + case FUNCTION_ERROR: Toast.makeText(activity,msg.getData().getString("ReturnData"),Toast.LENGTH_SHORT).show(); break; default: diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java index 9ca65d2..b0ce31e 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java @@ -23,7 +23,7 @@ public class FileHandler extends Handler { public final static int FUNCTION_GET_MD5 = 0; public final static int FUNCTION_GET_PWD = 2; public final static int FUNCTION_DECOMPRESS = 1; - public final static int ERROR = -1; + public final static int FUNCTION_ERROR = -1; private Activity activity; private Fragment fragment; @@ -41,7 +41,7 @@ public class FileHandler extends Handler { ((UnzipDialogFragment)fragment).setMD5(msg.getData().getString("md5")); ((UnzipDialogFragment)fragment).setProgressBar(View.INVISIBLE); break; - case ERROR: + case FUNCTION_ERROR: Toast.makeText(activity,msg.getData().getString("error"),Toast.LENGTH_SHORT).show(); break; case FUNCTION_DECOMPRESS: diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileThread.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileThread.java index 2f973be..b7afd6a 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileThread.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileThread.java @@ -14,11 +14,6 @@ import java.io.IOException; public class FileThread implements Runnable{ - public final static int FUNCTION_GET_MD5 = 0; - public final static int FUNCTION_GET_PWD = 2; - public final static int FUNCTION_DECOMPRESS = 1; - public final static int ERROR = -1; - private String srcFile,desPath,md5,passwd; private Handler handler; @@ -36,32 +31,32 @@ public class FileThread implements Runnable{ Message msg = new Message(); Bundle data = new Bundle(); switch (function){ - case FUNCTION_GET_MD5: + case FileHandler.FUNCTION_GET_MD5: try { md5 = FileUtils.getFileMD5(srcFile); data.putString("md5",md5); - msg.what = FUNCTION_GET_MD5; + msg.what = FileHandler.FUNCTION_GET_MD5; msg.setData(data); handler.sendMessage(msg); } catch (IOException e) { e.printStackTrace(); } break; - case FUNCTION_DECOMPRESS: + case FileHandler.FUNCTION_DECOMPRESS: try { FileUtils.unzip(srcFile,desPath,passwd,handler); Log.d("TAG:","解压完成"); md5 = FileUtils.getFileMD5(srcFile); data.putString("md5",md5); - msg.what = FUNCTION_GET_MD5; + msg.what = FileHandler.FUNCTION_GET_MD5; data.putBoolean("successful",true); - msg.what = FUNCTION_DECOMPRESS; + msg.what = FileHandler.FUNCTION_DECOMPRESS; msg.setData(data); handler.sendMessage(msg); } catch (ZipException e) { e.printStackTrace(); data.putString("error","解压失败"); - msg.what = ERROR; + msg.what = FileHandler.FUNCTION_ERROR; msg.setData(data); handler.sendMessage(msg); } catch (IOException e) { diff --git a/CloudKey/app/src/main/res/layout/query_pwd_dialog.xml b/CloudKey/app/src/main/res/layout/query_pwd_dialog.xml new file mode 100644 index 0000000..5efe8a3 --- /dev/null +++ b/CloudKey/app/src/main/res/layout/query_pwd_dialog.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/CloudKey/app/src/main/res/menu/nav_menu.xml b/CloudKey/app/src/main/res/menu/nav_menu.xml index fc49677..2039f62 100644 --- a/CloudKey/app/src/main/res/menu/nav_menu.xml +++ b/CloudKey/app/src/main/res/menu/nav_menu.xml @@ -5,6 +5,11 @@ + + + + + \ No newline at end of file diff --git a/CloudKey/app/src/main/res/navigation/nav_graph.xml b/CloudKey/app/src/main/res/navigation/nav_graph.xml index e411121..7d68250 100644 --- a/CloudKey/app/src/main/res/navigation/nav_graph.xml +++ b/CloudKey/app/src/main/res/navigation/nav_graph.xml @@ -33,4 +33,9 @@ android:name="com.thankvinci.CloudKey.Fragment.BugSubFragment" android:label="BUG提交" tools:layout="@layout/bug_sub_fragment" /> + \ No newline at end of file diff --git a/开发历程.md b/开发历程.md index 8520dfc..3e35c19 100644 --- a/开发历程.md +++ b/开发历程.md @@ -333,4 +333,10 @@ FileHandler负责将获取到的md5码发到NetThread,然后将得到的密码 删除无用的Toast -使dialog在解压过程中点击空白区域无效,点击取消无效 \ No newline at end of file +使dialog在解压过程中点击空白区域无效,点击取消无效 + +**2021/6/13** + +添加一个查询密码专用的Dialog,用于给用户输入md5码手动查询密码 + +界面上有三个TextView控件,一个是将密码复制到剪贴板,一个是清空EditView,一个是获取密码 \ No newline at end of file