Compare commits

..

4 Commits

4 changed files with 52 additions and 33 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Apr 09 01:41:37 HKT 2026
stageCount=8
#Thu Apr 09 02:36:26 HKT 2026
stageCount=10
libraryProject=
baseVersion=15.14
publishVersion=15.14.7
publishVersion=15.14.9
buildCount=0
baseBetaVersion=15.14.8
baseBetaVersion=15.14.10

View File

@@ -22,6 +22,7 @@ import cc.winboll.studio.libappbase.ToastUtils;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
import cc.winboll.studio.contacts.dun.Rules;
/**
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
@@ -119,6 +120,14 @@ public class CallLogAdapter extends RecyclerView.Adapter<CallLogAdapter.CallLogV
clipboard.setPrimaryClip(clip);
Toast.makeText(mContext, "Copy to clipboard.", Toast.LENGTH_SHORT).show();
LogUtils.d(TAG, "showPhonePopupMenu: 号码" + callLog.getPhoneNumber() + "已复制到剪贴板");
} else if (itemId == R.id.item_calllog_phonenumber_yundun_test) {
// 跳转到添加联系人页面
//if (Rules.getInstance(mContext).isAllowed(callLog.getPhoneNumber(), false)) {
if (Rules.getInstance(mContext).isAllowed(callLog.getPhoneNumber(), true)) {
ToastUtils.show("(✔)" + callLog.getPhoneNumber() + " Is Allowed By YunDun.");
} else {
ToastUtils.show("(✘)YunDun Defense The Phone " + callLog.getPhoneNumber() + "");
}
} else if (itemId == R.id.item_calllog_phonenumber_add_contact) {
// 跳转到添加联系人页面
ContactUtils.jumpToAddContact(mContext, callLog.getPhoneNumber());

View File

@@ -135,7 +135,11 @@ public class Rules {
SettingsBean.saveBean(mContext, mSettingsModel);
}
public boolean isAllowed(String phoneNumber) {
public boolean isAllowed(String phoneNumber) {
return isAllowed(phoneNumber, false);
}
public boolean isAllowed(String phoneNumber, boolean isTest) {
// 没有启用云盾,默认允许接通任何电话
if (!mSettingsModel.isEnableDun()) {
LogUtils.d(TAG, String.format("没有启用云盾默认允许接通任何电话。isAllowed(...) return true"));
@@ -204,37 +208,40 @@ public class Rules {
}
}
if (isConnect) {
// 如果防御结果为连接,则恢复防御盾牌最大值层数
mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount());
LogUtils.d(TAG, String.format("防御结果为连接,恢复防御盾牌最大值层数 %d", mSettingsModel.getDunTotalCount()));
saveDun();
SettingsActivity.notifyDunInfoUpdate();
} else if (isDefend) {
// 如果触发了以上某个防御模块,减少防御盾牌层数
int newDunCount = nDunCurrentCount;
LogUtils.d(TAG, String.format("新的防御层数预计为 %d", newDunCount));
// 如果不是规则测试时,就执行云盾防御机能。
if (isTest == false) {
if (isConnect) {
// 如果防御结果为连接,恢复防御盾牌最大值层数
mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount());
LogUtils.d(TAG, String.format("防御结果为连接,恢复防御盾牌最大值层数 %d", mSettingsModel.getDunTotalCount()));
saveDun();
SettingsActivity.notifyDunInfoUpdate();
} else if (isDefend) {
// 如果触发了以上某个防御模块,减少防御盾牌层数
int newDunCount = nDunCurrentCount;
LogUtils.d(TAG, String.format("新的防御层数预计为 %d", newDunCount));
// 保证盾值在[1DunTotalCount]之内其他值一律重置为 DunTotalCount。
if (newDunCount > 0 && newDunCount < mSettingsModel.getDunTotalCount()) {
mSettingsModel.setDunCurrentCount(newDunCount);
LogUtils.d(TAG, String.format("设置防御层数为 %d", newDunCount));
} else {
mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount());
LogUtils.d(TAG, String.format("盾值不在[0%d]区间,恢复防御最大值%d", mSettingsModel.getDunTotalCount(), mSettingsModel.getDunTotalCount()));
}
// 保证盾值在[1DunTotalCount]之内其他值一律重置为 DunTotalCount。
if (newDunCount > 0 && newDunCount < mSettingsModel.getDunTotalCount()) {
mSettingsModel.setDunCurrentCount(newDunCount);
LogUtils.d(TAG, String.format("设置防御层数为 %d", newDunCount));
} else {
mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount());
LogUtils.d(TAG, String.format("盾值不在[0%d]区间,恢复防御最大值%d", mSettingsModel.getDunTotalCount(), mSettingsModel.getDunTotalCount()));
}
saveDun();
SettingsActivity.notifyDunInfoUpdate();
}
saveDun();
SettingsActivity.notifyDunInfoUpdate();
}
// 返回校验结果
LogUtils.d(TAG, String.format("返回校验结果 isConnect == %s", isConnect));
// 一键更新所有 DunTemperatureView 实例的盾值
DunTemperatureView.updateDunValue(mSettingsModel.getDunTotalCount(), mSettingsModel.getDunCurrentCount());
// 一键更新所有 DunTemperatureView 实例的盾值
DunTemperatureView.updateDunValue(mSettingsModel.getDunTotalCount(), mSettingsModel.getDunCurrentCount());
}
return isConnect;
}
// 返回校验结果
LogUtils.d(TAG, String.format("返回校验结果 isConnect == %s", isConnect));
return isConnect;
}
public void add(String szPhoneConnectRule, boolean isAllowConnection, boolean isEnable) {
_PhoneConnectRuleModelList.add(new PhoneConnectRuleBean(szPhoneConnectRule, isAllowConnection, isEnable));

View File

@@ -5,6 +5,9 @@
<item
android:id="@+id/item_calllog_phonenumber_copy"
android:title="Copy"/>
<item
android:id="@+id/item_calllog_phonenumber_yundun_test"
android:title="YunDun Test"/>
<item
android:id="@+id/item_calllog_phonenumber_add_contact"
android:title="Add Contact"/>