优化:一键克隆机制优化,提高成功率

This commit is contained in:
pppscn 2022-01-26 10:02:01 +08:00
parent f37ce20fcb
commit 4172087e25
7 changed files with 90 additions and 39 deletions

View File

@ -66,7 +66,7 @@ public class CloneActivity extends AppCompatActivity {
} else if (msg.what == DOWNLOAD) {
String savePath = context.getCacheDir().getPath() + File.separator + BackupDbTask.BACKUP_FILE;
Log.d(TAG, savePath);
downloadFile(msg.getData().getString("URL"), context.getCacheDir().getPath(), BackupDbTask.BACKUP_FILE);
downloadFile(msg.getData().getString("URL"), context.getCacheDir().getPath(), BackupDbTask.BACKUP_FILE, msg.getData().getString("INFO"));
}
}
};
@ -186,7 +186,7 @@ public class CloneActivity extends AppCompatActivity {
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
Toast(handError, TAG, "从发送端获取一键克隆信息失败");
Toast(handError, TAG, getString(R.string.tips_get_info_failed));
}
@Override
@ -195,44 +195,28 @@ public class CloneActivity extends AppCompatActivity {
Log.d(TAG, "Response" + response.code() + "" + responseStr);
if (TextUtils.isEmpty(responseStr)) {
Toast(handError, TAG, "从发送端获取一键克隆信息失败");
Toast(handError, TAG, getString(R.string.tips_get_info_failed));
return;
}
try {
CloneInfoVo cloneInfoVo = JSON.parseObject(responseStr, CloneInfoVo.class);
if (SettingUtil.getVersionCode() != cloneInfoVo.getVersionCode()) {
Toast(handError, TAG, "发送端与接收端的APP版本不一致无法一键克隆");
Toast(handError, TAG, getString(R.string.tips_versions_inconsistent));
return;
}
//应用配置
SettingUtil.switchEnableSms(cloneInfoVo.isEnableSms());
SettingUtil.switchEnablePhone(cloneInfoVo.isEnablePhone());
SettingUtil.switchCallType1(cloneInfoVo.isCallType1());
SettingUtil.switchCallType2(cloneInfoVo.isCallType2());
SettingUtil.switchCallType3(cloneInfoVo.isCallType3());
SettingUtil.switchEnableAppNotify(cloneInfoVo.isEnableAppNotify());
SettingUtil.switchCancelAppNotify(cloneInfoVo.isCancelAppNotify());
SettingUtil.smsHubApiUrl(cloneInfoVo.getSmsHubApiUrl());
SettingUtil.setBatteryLevelAlarmMin(cloneInfoVo.getBatteryLevelAlarmMin());
SettingUtil.setBatteryLevelAlarmMax(cloneInfoVo.getBatteryLevelAlarmMax());
SettingUtil.switchBatteryLevelAlarmOnce(cloneInfoVo.isBatteryLevelAlarmOnce());
SettingUtil.setRetryTimes(cloneInfoVo.getRetryTimes());
SettingUtil.setDelayTime(cloneInfoVo.getDelayTime());
SettingUtil.switchSmsTemplate(cloneInfoVo.isEnableSmsTemplate());
SettingUtil.setSmsTemplate(cloneInfoVo.getSmsTemplate());
//下载备份文件
Message msg = new Message();
msg.what = DOWNLOAD;
Bundle bundle = new Bundle();
bundle.putString("URL", requestUrl);
bundle.putString("INFO", responseStr);
msg.setData(bundle);
handError.sendMessage(msg);
} catch (Exception e) {
Toast(handError, TAG, "一键克隆失败:" + e.getMessage());
Toast(handError, TAG, getString(R.string.tips_clone_failed) + e.getMessage());
}
}
});
@ -256,11 +240,11 @@ public class CloneActivity extends AppCompatActivity {
*
* @param url 下载链接
*/
public void downloadFile(String url, final String destFileDir, final String destFileName) {
public void downloadFile(String url, final String destFileDir, final String destFileName, final String cloneInfo) {
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setTitle("正在下载");
progressDialog.setMessage("请稍后...");
progressDialog.setTitle(getString(R.string.tips_downloading));
progressDialog.setMessage(getString(R.string.tips_please_wait));
progressDialog.setProgress(0);
progressDialog.setMax(100);
progressDialog.show();
@ -269,7 +253,7 @@ public class CloneActivity extends AppCompatActivity {
@Override
public void onDownloadSuccess(File file) {
if (progressDialog.isShowing()) {
Toast(handError, TAG, "下载完成,正准备还原数据...");
Toast(handError, TAG, getString(R.string.tips_download_done));
progressDialog.dismiss();
}
//下载完成进行相关逻辑操作
@ -280,7 +264,27 @@ public class CloneActivity extends AppCompatActivity {
String backup_version = task.doInBackground(BackupDbTask.COMMAND_RESTORE);
Log.d(TAG, "backup_version = " + backup_version);
Toast(handError, TAG, "一键克隆操作成功!请进入通用设置检查各项开关是否已开启!");
//应用配置
CloneInfoVo cloneInfoVo = JSON.parseObject(cloneInfo, CloneInfoVo.class);
System.out.println(cloneInfoVo.toString());
SettingUtil.init(context);
SettingUtil.switchEnableSms(cloneInfoVo.isEnableSms());
SettingUtil.switchEnablePhone(cloneInfoVo.isEnablePhone());
SettingUtil.switchCallType1(cloneInfoVo.isCallType1());
SettingUtil.switchCallType2(cloneInfoVo.isCallType2());
SettingUtil.switchCallType3(cloneInfoVo.isCallType3());
SettingUtil.switchEnableAppNotify(cloneInfoVo.isEnableAppNotify());
SettingUtil.switchCancelAppNotify(cloneInfoVo.isCancelAppNotify());
SettingUtil.smsHubApiUrl(cloneInfoVo.getSmsHubApiUrl());
SettingUtil.setBatteryLevelAlarmMin(cloneInfoVo.getBatteryLevelAlarmMin());
SettingUtil.setBatteryLevelAlarmMax(cloneInfoVo.getBatteryLevelAlarmMax());
SettingUtil.switchBatteryLevelAlarmOnce(cloneInfoVo.isBatteryLevelAlarmOnce());
SettingUtil.setRetryTimes(cloneInfoVo.getRetryTimes());
SettingUtil.setDelayTime(cloneInfoVo.getDelayTime());
SettingUtil.switchSmsTemplate(cloneInfoVo.isEnableSmsTemplate());
SettingUtil.setSmsTemplate(cloneInfoVo.getSmsTemplate());
Toast(handError, TAG, getString(R.string.tips_clone_done));
}
@Override
@ -292,8 +296,8 @@ public class CloneActivity extends AppCompatActivity {
@Override
public void onDownloadFailed(Exception e) {
//下载异常进行相关提示操作
Log.e(TAG, "下载失败:" + e.getMessage());
Toast(handError, TAG, "下载失败:" + e.getMessage());
Log.e(TAG, getString(R.string.tips_download_failed) + e.getMessage());
Toast(handError, TAG, getString(R.string.tips_download_failed) + e.getMessage());
}
});
}

View File

@ -1,10 +1,14 @@
package com.idormy.sms.forwarder.model.vo;
import androidx.annotation.NonNull;
import java.io.Serializable;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Setter
@Getter
public class CloneInfoVo implements Serializable {
private int versionCode;
@ -25,4 +29,27 @@ public class CloneInfoVo implements Serializable {
private boolean enableSmsTemplate;
private String smsTemplate;
@NonNull
@Override
public String toString() {
return "CloneInfoVo{" +
"versionCode='" + versionCode + '\'' +
", versionName='" + versionName + '\'' +
", enableSms=" + enableSms +
", enablePhone=" + enablePhone +
", callType1=" + callType1 +
", callType2=" + callType2 +
", callType3=" + callType3 +
", enableAppNotify=" + enableAppNotify +
", cancelAppNotify=" + cancelAppNotify +
", smsHubApiUrl=" + smsHubApiUrl +
", batteryLevelAlarmMin=" + batteryLevelAlarmMin +
", batteryLevelAlarmMax=" + batteryLevelAlarmMax +
", batteryLevelAlarmOnce=" + batteryLevelAlarmOnce +
", retryTimes=" + retryTimes +
", delayTime=" + delayTime +
", enableSmsTemplate=" + enableSmsTemplate +
", smsTemplate=" + smsTemplate +
'}';
}
}

View File

@ -48,6 +48,7 @@ public class BaseServlet extends HttpServlet {
public BaseServlet(String path, Context context) {
this.path = path;
this.context = context;
SettingUtil.init(context);
}
private final String path;

View File

@ -44,10 +44,10 @@ public class ZipUtils {
File folder = new File(outPathString + File.separator + szName);
folder.mkdirs();
} else {
Log.e(TAG, outPathString + File.separator + szName);
Log.d(TAG, outPathString + File.separator + szName);
File file = new File(outPathString + File.separator + szName);
if (!file.exists()) {
Log.e(TAG, "Create the file:" + outPathString + File.separator + szName);
Log.d(TAG, "Create the file:" + outPathString + File.separator + szName);
Objects.requireNonNull(file.getParentFile()).mkdirs();
file.createNewFile();
}
@ -78,10 +78,10 @@ public class ZipUtils {
File folder = new File(outPathString + File.separator + szName);
folder.mkdirs();
} else {
Log.e(TAG, outPathString + File.separator + szName);
Log.d(TAG, outPathString + File.separator + szName);
File file = new File(outPathString + File.separator + szName);
if (!file.exists()) {
Log.e(TAG, "Create the file:" + outPathString + File.separator + szName);
Log.d(TAG, "Create the file:" + outPathString + File.separator + szName);
Objects.requireNonNull(file.getParentFile()).mkdirs();
file.createNewFile();
}

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
@ -95,15 +96,17 @@
android:id="@+id/ipText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10sp"
android:layout_marginTop="10dp"
android:text="@string/local_ip"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10sp"
android:text="@string/operating_instruction" />
android:layout_marginTop="10dp"
android:text="@string/operating_instruction"
android:textSize="10sp"
tools:ignore="SmallSp" />
</LinearLayout>
</LinearLayout>

View File

@ -382,4 +382,12 @@
<string name="tips_battery_level_alarm_once">[Note] The upper and lower limits of the battery warning threshold are 0, and the continuous warning does not work.</string>
<string name="tips_compatible_solution">Compatible solution</string>
<string name="tips_wait_3_seconds">Please wait 3 seconds after clicking start</string>
<string name="tips_clone_done">One-click clone operation is complete! \nPlease check whether the general settings and switches are turned on!</string>
<string name="tips_download_done">Download complete, preparing to restore data…</string>
<string name="tips_download_failed">Download failed:</string>
<string name="tips_downloading">Downloading</string>
<string name="tips_please_wait">Please wait…</string>
<string name="tips_clone_failed">One-click clone failed:</string>
<string name="tips_versions_inconsistent">The APP versions of the sender and the receiver are inconsistent, and cannot be cloned with one click!</string>
<string name="tips_get_info_failed">Failed to get one-click clone information from sender</string>
</resources>

View File

@ -217,7 +217,7 @@
<string name="post">POST</string>
<string name="get">GET</string>
<string name="local_ip">本机IP</string>
<string name="operating_instruction">操作说明:\n【注意】发送方与接收方的APP版本号必须一致!\n1.新旧手机连接同一个WiFi网络(禁用AP隔离)\n2.旧手机直接点【发送】按钮获取到【服务端IP】\n3.新手机填写【服务端IP】后点【接收】按钮\n【注意】新手机接收后,发送通道、转发规则将完全被覆盖,清空历史记录!</string>
<string name="operating_instruction">操作说明:\n1.新旧手机连接同一个WiFi网络(禁用AP隔离)\n2.旧手机直接点【发送】按钮获取到【服务端IP】\n3.新手机填写【服务端IP】后点【接收】按钮\n\n注意事项\n1.发送方与接收方的APP版本号必须一致才能克隆!\n2.新手机接收后,发送通道、转发规则将完全被覆盖,清空历史记录!\n3.主动请求、保活措施、个性设置不在克隆范围</string>
<string name="send">启动</string>
<string name="stop">停止</string>
<string name="old_mobile_phone">我是旧手机</string>
@ -381,4 +381,12 @@
<string name="tips_battery_level_alarm_once">【注意】电量预警阈值上下限都是0持续提醒不起作用</string>
<string name="tips_compatible_solution">兼容方案</string>
<string name="tips_wait_3_seconds">点击启动后请等待3秒</string>
<string name="tips_clone_done">一键克隆操作完成!\n请检查·通用设置·各项开关是否已开启</string>
<string name="tips_download_done">下载完成,正准备还原数据...</string>
<string name="tips_download_failed">下载失败:</string>
<string name="tips_downloading">正在下载</string>
<string name="tips_please_wait">请稍后...</string>
<string name="tips_clone_failed">一键克隆失败:</string>
<string name="tips_versions_inconsistent">发送端与接收端的APP版本不一致无法一键克隆</string>
<string name="tips_get_info_failed">从发送端获取一键克隆信息失败</string>
</resources>