From 069bf52d8352135fe13255ba83125bf376835b59 Mon Sep 17 00:00:00 2001 From: ThankVinci Date: Sun, 13 Jun 2021 03:27:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E8=A7=A3=E5=8E=8B?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=A3=80=E6=B5=8B=E5=8E=8B=E7=BC=A9=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=98=AF=E5=90=A6=E6=8D=9F=E5=9D=8F=E5=92=8C(?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E5=AF=86=E7=A0=81=E9=94=99=E8=AF=AF)?= =?UTF-8?q?=E8=A7=A3=E5=8E=8B=E5=A4=B1=E8=B4=A5,=E9=83=BD=E6=98=AFZipExcep?= =?UTF-8?q?tion,=E6=89=80=E4=BB=A5=E9=83=BD=E5=BC=B9=E5=87=BA=E8=A7=A3?= =?UTF-8?q?=E5=8E=8B=E5=A4=B1=E8=B4=A5,=E5=8E=8B=E7=BC=A9=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=8D=9F=E5=9D=8F=E5=A4=9A=E5=BC=B9=E4=B8=80=E4=B8=AA?= =?UTF-8?q?Toast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Fragment/UnzipDialogFragment.java | 54 ++++++++++++++----- .../thankvinci/CloudKey/Utils/FileThread.java | 6 +++ 开发历程.md | 10 +++- 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java index e3c99f6..fb2bcda 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java @@ -1,6 +1,7 @@ package com.thankvinci.CloudKey.Fragment; import android.content.DialogInterface; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; @@ -13,14 +14,17 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; +import com.thankvinci.CloudKey.NetUtils.NetHandler; import com.thankvinci.CloudKey.NetUtils.NetThread; import com.thankvinci.CloudKey.R; import com.thankvinci.CloudKey.Utils.FileHandler; import com.thankvinci.CloudKey.Utils.FileThread; +import com.thankvinci.CloudKey.Utils.MyUtils; public class UnzipDialogFragment extends DialogFragment { @@ -38,6 +42,8 @@ public class UnzipDialogFragment extends DialogFragment { private TextView getPWD; //解压的参数 private String srcFile,desPath,md5,passwd; + //解压是否成功 + private boolean successful; public interface UnzipDialogListener{ public void onDialogUnzipClicked(); @@ -78,6 +84,28 @@ public class UnzipDialogFragment extends DialogFragment { acceptPWD2SQL = view.findViewById(R.id.accept_pwd_2_sql); getPWD = view.findViewById(R.id.getpwd); + fromSQL = false; + successful = false; + passwd_edit.setOnClickListener(new View.OnClickListener() { + @RequiresApi(api = Build.VERSION_CODES.O) + @Override + public void onClick(View v) { + if((!("".equals(passwd_edit.getText().toString())))&&!(passwd_edit.getFocusable()==EditText.FOCUSABLE)){ + MyUtils.copyToClipboard(getActivity(),passwd_edit.getText().toString()); + Toast.makeText(getActivity(),"已将密码复制到粘贴板",Toast.LENGTH_SHORT).show(); + } + } + }); + md5_edit.setOnClickListener(new View.OnClickListener() { + @RequiresApi(api = Build.VERSION_CODES.O) + @Override + public void onClick(View v) { + if((!("".equals(md5_edit.getText().toString())))&&!(md5_edit.getFocusable()==EditText.FOCUSABLE)){ + MyUtils.copyToClipboard(getActivity(),md5_edit.getText().toString()); + Toast.makeText(getActivity(),"已将MD5码复制到粘贴板",Toast.LENGTH_SHORT).show(); + } + } + }); acceptPWD2SQL.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -105,8 +133,16 @@ public class UnzipDialogFragment extends DialogFragment { builder.setView(view).setTitle("解压到当前路径").setPositiveButton("解压", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + passwd = passwd_edit.getText().toString(); + Handler fHandler = new FileHandler(getActivity(),fragment); + Thread ft = new Thread(new FileThread(fHandler,srcFile,desPath,passwd,FileHandler.FUNCTION_DECOMPRESS)); + ft.start(); if (acceptPWD2SQL.isChecked() && !fromSQL){ - + //StringBuilder builder = new StringBuilder(); + //builder.append("http://1.14.144.194:8080/cscp/cscp?para0=query¶1="); + //builder.append(md5) + //Handler handler = new NetHandler(getActivity(),fragment); + //Thread nt = new Thread(new NetThread(handler)); } listener.onDialogUnzipClicked(); } @@ -123,22 +159,16 @@ public class UnzipDialogFragment extends DialogFragment { } public void setPasswd(String passwd){ passwd_edit.setText(passwd); + this.passwd = passwd_edit.getText().toString(); passwd_edit.setSelection(passwd.length()); + passwd_edit.setFocusable(false); } public void setMD5(String md5){ md5_edit.setText(md5); + this.md5 = md5_edit.getText().toString(); md5_edit.setSelection(md5.length()); } - public String getSrcFile(){ - return srcFile; - } - public String getDesPath(){ - return desPath; - } - public String getMD5(){ - return md5; - } - public String getPasswd(){ - return passwd; + public void setSuccessful(boolean successful){ + this.successful = successful; } } 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 754879b..43dbc7a 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 @@ -3,6 +3,8 @@ package com.thankvinci.CloudKey.Utils; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; +import android.widget.Toast; import com.thankvinci.CloudKey.Files.FileUtils; @@ -49,6 +51,10 @@ public class FileThread implements Runnable{ FileUtils.unzip(srcFile,desPath,passwd,handler); } catch (ZipException e) { e.printStackTrace(); + data.putString("error","解压失败"); + msg.what = ERROR; + msg.setData(data); + handler.sendMessage(msg); } break; default: break; diff --git a/开发历程.md b/开发历程.md index 744564b..453dbe2 100644 --- a/开发历程.md +++ b/开发历程.md @@ -279,6 +279,12 @@ FileHandler负责将获取到的md5码发到NetThread,然后将得到的密码 完成了解压缩用的dialog的布局设计,传入数据也有了,但是遇到个问题,就是,一直以来所有的Handler处理的数据我都是直接Toast出去的,如何把数据更新到Dialog,好像把当前fragment/dialogfragment作为参数传进去会方便点 -**2021/6/12** +**2021/6/13** + +再次删除冗余代码,整理比较乱的代码,决定等现在的功能都完成后再增加一个用户自己输入MD5获取密码的界面 + +成功将两个线程中的MD5码和文件密码更新到主线程UI中 + +**2021/6/13** -再次删除冗余代码,整理比较乱的代码,决定等现在的功能都完成后再增加一个用户自己输入MD5获取密码的界面 \ No newline at end of file +实现了解压文件检测压缩文件是否损坏和(因为密码错误)解压失败,都是ZipException,所以都弹出解压失败,压缩文件损坏多弹一个异常 \ No newline at end of file