实现了解压文件检测压缩文件是否损坏和(因为密码错误)解压失败,都是ZipException,所以都弹出解压失败,压缩文件损坏多弹一个Toast

master
ThankVinci 4 years ago
parent 07bae7f577
commit 069bf52d83

@ -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&para1=");
//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;
}
}

@ -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;

@ -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获取密码的界面
实现了解压文件检测压缩文件是否损坏和(因为密码错误)解压失败,都是ZipException,所以都弹出解压失败,压缩文件损坏多弹一个异常
Loading…
Cancel
Save