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 #Created by .winboll/winboll_app_build.gradle
#Thu Apr 09 01:41:37 HKT 2026 #Thu Apr 09 02:36:26 HKT 2026
stageCount=8 stageCount=10
libraryProject= libraryProject=
baseVersion=15.14 baseVersion=15.14
publishVersion=15.14.7 publishVersion=15.14.9
buildCount=0 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.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import cc.winboll.studio.contacts.dun.Rules;
/** /**
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com> * @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
@@ -119,6 +120,14 @@ public class CallLogAdapter extends RecyclerView.Adapter<CallLogAdapter.CallLogV
clipboard.setPrimaryClip(clip); clipboard.setPrimaryClip(clip);
Toast.makeText(mContext, "Copy to clipboard.", Toast.LENGTH_SHORT).show(); Toast.makeText(mContext, "Copy to clipboard.", Toast.LENGTH_SHORT).show();
LogUtils.d(TAG, "showPhonePopupMenu: 号码" + callLog.getPhoneNumber() + "已复制到剪贴板"); 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) { } else if (itemId == R.id.item_calllog_phonenumber_add_contact) {
// 跳转到添加联系人页面 // 跳转到添加联系人页面
ContactUtils.jumpToAddContact(mContext, callLog.getPhoneNumber()); ContactUtils.jumpToAddContact(mContext, callLog.getPhoneNumber());

View File

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

View File

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