diff --git a/appbase/build.properties b/appbase/build.properties
index 3eaef43..0853ecc 100644
--- a/appbase/build.properties
+++ b/appbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Tue May 20 03:28:00 GMT 2025
-stageCount=2
+#Sun Jun 01 15:41:55 HKT 2025
+stageCount=3
libraryProject=libappbase
baseVersion=15.8
-publishVersion=15.8.1
-buildCount=1
-baseBetaVersion=15.8.2
+publishVersion=15.8.2
+buildCount=0
+baseBetaVersion=15.8.3
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
index 4ed4da2..0b3a8a4 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
@@ -40,7 +40,6 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
}
Toolbar mToolbar;
- LogView mLogView;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -53,14 +52,11 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
- mLogView = findViewById(R.id.logview);
- mLogView.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
- getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
return super.onCreateOptionsMenu(menu);
}
@@ -176,8 +172,7 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
@Override
protected void onResume() {
super.onResume();
- mLogView.start();
}
-
-
+
+
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java b/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java
index b1872e8..da5178c 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java
@@ -66,16 +66,11 @@ public class New2Activity extends WinBoLLActivity implements IWinBoLLActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
- getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
- //GlobalApplication.getWinBoLLActivityManager().startLogActivity(this);
- return true;
- }
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
return super.onOptionsItemSelected(item);
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java
index 7cedbe6..429cdcd 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java
@@ -64,16 +64,11 @@ public class NewActivity extends WinBoLLActivity implements IWinBoLLActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
- getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
- //GlobalApplication.getWinBoLLActivityManager().startLogActivity(this);
- return true;
- }
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
return super.onOptionsItemSelected(item);
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/activities/WinBoLLActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/activities/WinBoLLActivity.java
index 3071f98..453af98 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/activities/WinBoLLActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/activities/WinBoLLActivity.java
@@ -6,6 +6,12 @@ package cc.winboll.studio.appbase.activities;
* @Describe WinBoLL 窗口基础类
*/
import android.app.Activity;
+import android.os.Bundle;
+import android.view.MenuItem;
+import cc.winboll.studio.appbase.MainActivity;
+import cc.winboll.studio.appbase.R;
+import cc.winboll.studio.libappbase.GlobalApplication;
+import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
@@ -21,4 +27,35 @@ public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
public String getTag() {
return TAG;
}
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ LogUtils.d(TAG, String.format("onResume %s", getTag()));
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.item_log) {
+ GlobalApplication.getWinBoLLActivityManager().startLogActivity(this);
+ return true;
+ } else if (item.getItemId() == R.id.item_home) {
+ GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), MainActivity.class);
+ return true;
+ }
+ // 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+ GlobalApplication.getWinBoLLActivityManager().add(this);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
+ }
}
diff --git a/appbase/src/main/res/layout/activity_main.xml b/appbase/src/main/res/layout/activity_main.xml
index 61a1475..b268f28 100644
--- a/appbase/src/main/res/layout/activity_main.xml
+++ b/appbase/src/main/res/layout/activity_main.xml
@@ -32,13 +32,19 @@
-
-
+ android:text="安卓R对应的是Android 11,其API级别是30。以下是Android 11中一些重要的API相关特性:
+ \n- 隐私保护方面:引入单次授权,让用户可以选择授予应用对位置信息、麦克风和摄像头的临时访问权限。还增加了数据访问审核功能,能让开发者深入了解应用在何处访问私密数据。
+
+ \n- 系统功能方面:提供了ControlsProviderService API,用于向连接的外部设备提供控件,这些控件显示于Android电源菜单中的设备控件下。媒体控件也得到更新,显示于快捷设置旁,来自多个应用的会话排列在一个可滑动的轮播界面中。
+
+ \n- 硬件支持方面:提供了一些API以支持瀑布屏,通过将窗口布局属性 layoutInDisplayCutoutMode 设为 LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS ,可允许窗口延伸到屏幕各个边缘上的刘海和瀑布区域。对于合页式屏幕配置的设备,提供了具有 TYPE_HINGE_ANGLE 的新传感器以及新的 SensorEvent ,用于监控合页角度。
+
+ \n- 安全方面:对生物识别身份验证机制进行了更新,引入了 BiometricManager.Authenticators 接口,定义了 BIOMETRIC_STRONG 、 BIOMETRIC_WEAK 、 DEVICE_CREDENTIAL 等身份验证类型。还在 BiometricPrompt 类中提供了对“每次使用时进行身份验证”密钥的更多支持。
+
+ \n- 性能和质量方面:支持无线调试,通过Android调试桥(adb)从工作站以无线方式部署和调试应用,避免了常见的USB连接问题。"/>
+
+
@@ -211,11 +217,5 @@
-
-
-
diff --git a/appbase/src/main/res/menu/toolbar_main.xml b/appbase/src/main/res/menu/toolbar_main.xml
index a5662ee..7fac644 100644
--- a/appbase/src/main/res/menu/toolbar_main.xml
+++ b/appbase/src/main/res/menu/toolbar_main.xml
@@ -1,6 +1,12 @@
diff --git a/contacts/build.gradle b/contacts/build.gradle
index 2fb0f2b..0016669 100644
--- a/contacts/build.gradle
+++ b/contacts/build.gradle
@@ -24,12 +24,12 @@ android {
defaultConfig {
applicationId "cc.winboll.studio.contacts"
minSdkVersion 24
- targetSdkVersion 29
+ targetSdkVersion 30
versionCode 1
// versionName 更新后需要手动设置
// 项目模块目录的 build.gradle 文件的 stageCount=0
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
- versionName "15.2"
+ versionName "15.3"
if(true) {
versionName = genVersionName("${versionName}")
}
@@ -45,6 +45,9 @@ android {
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
+ api 'cc.winboll.studio:libaes:15.8.0'
+ api 'cc.winboll.studio:libapputils:15.8.1'
+ api 'cc.winboll.studio:libappbase:15.8.1'
// 权限请求框架:https://github.com/getActivity/XXPermissions
api 'com.github.getActivity:XXPermissions:18.63'
@@ -81,8 +84,4 @@ dependencies {
//api 'androidx.vectordrawable:vectordrawable:1.1.0'
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
//api 'androidx.fragment:fragment:1.1.0'
-
- api 'cc.winboll.studio:libaes:15.2.4'
- api 'cc.winboll.studio:libapputils:15.2.1'
- api 'cc.winboll.studio:libappbase:15.2.2'
}
diff --git a/contacts/build.properties b/contacts/build.properties
index 764b4bf..a2f12cd 100644
--- a/contacts/build.properties
+++ b/contacts/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Sun Apr 13 02:46:09 HKT 2025
-stageCount=8
+#Tue May 20 13:02:18 HKT 2025
+stageCount=3
libraryProject=
-baseVersion=15.2
-publishVersion=15.2.7
+baseVersion=15.3
+publishVersion=15.3.2
buildCount=0
-baseBetaVersion=15.2.8
+baseBetaVersion=15.3.3
diff --git a/contacts/src/main/AndroidManifest.xml b/contacts/src/main/AndroidManifest.xml
index 1ff5d1b..4d2a288 100644
--- a/contacts/src/main/AndroidManifest.xml
+++ b/contacts/src/main/AndroidManifest.xml
@@ -42,7 +42,8 @@
android:icon="@drawable/ic_winboll"
android:label="@string/app_name"
android:theme="@style/MyAppTheme"
- android:supportsRtl="true">
+ android:supportsRtl="true"
+ android:networkSecurityConfig="@xml/network_security_config">
-
\ No newline at end of file
+
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/App.java b/contacts/src/main/java/cc/winboll/studio/contacts/App.java
index 9493dd2..9f94d6b 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/App.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/App.java
@@ -7,7 +7,7 @@ package cc.winboll.studio.contacts;
*/
import android.view.Gravity;
import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
+import cc.winboll.studio.libappbase.winboll.WinBoLLActivityManager;
import com.hjq.toast.ToastUtils;
public class App extends GlobalApplication {
@@ -20,8 +20,8 @@ public class App extends GlobalApplication {
// 这样可以预先设置日志与数据的存储根目录。
//setIsDebuging(BuildConfig.DEBUG);
super.onCreate();
- // 设置 WinBoll 应用 UI 类型
- WinBollActivityManager.getInstance(this).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Aplication);
+ // 设置 WinBoLL 应用 UI 类型
+ getWinBoLLActivityManager().setWinBoLLUI_TYPE(WinBoLLActivityManager.WinBoLLUI_TYPE.Aplication);
//LogUtils.d(TAG, "onCreate");
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java
index c2de167..86a546d 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java
@@ -32,22 +32,21 @@ import cc.winboll.studio.contacts.fragments.CallLogFragment;
import cc.winboll.studio.contacts.fragments.ContactsFragment;
import cc.winboll.studio.contacts.fragments.LogFragment;
import cc.winboll.studio.contacts.services.MainService;
-import cc.winboll.studio.libaes.winboll.APPInfo;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
-import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
+import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
-final public class MainActivity extends AppCompatActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
+final public class MainActivity extends AppCompatActivity implements IWinBoLLActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
public static final String TAG = "MainActivity";
public static final int REQUEST_HOME_ACTIVITY = 0;
public static final int REQUEST_ABOUT_ACTIVITY = 1;
- public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
+ public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoLL.ACTION_SOS";
static MainActivity _MainActivity;
LogView mLogView;
@@ -71,10 +70,10 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
private static final int DIALER_REQUEST_CODE = 1;
- @Override
- public Activity getActivity() {
- return this;
- }
+// @Override
+// public Activity getActivity() {
+// return this;
+// }
// @Override
// public APPInfo getAppInfo() {
@@ -95,6 +94,17 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// return null;
// }
+
+ @Override
+ public Activity getActivity() {
+ return this;
+ }
+
+ @Override
+ public String getTag() {
+ return TAG;
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
// 接收并处理 Intent 数据,函数 Intent 处理接收就直接返回
@@ -111,7 +121,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// // 显示后退按钮
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// }
- getSupportActionBar().setSubtitle(getTag());
+ getSupportActionBar().setSubtitle(TAG);
tabLayout = findViewById(R.id.tabLayout);
viewPager = findViewById(R.id.viewPager);
@@ -339,7 +349,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
//
// if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
// try {
-// WinBollActivity clazzActivity = UnitTestActivity.class.newInstance();
+// WinBoLLActivity clazzActivity = UnitTestActivity.class.newInstance();
// String tag = clazzActivity.getTag();
// LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
// Intent subIntent = new Intent(this, UnitTestActivity.class);
@@ -357,8 +367,8 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// }
//
// Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
-// //startWinBollActivity(subIntent, tag);
-// WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class);
+// //startWinBoLLActivity(subIntent, tag);
+// WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, subIntent, UnitTestActivity.class);
// } catch (IllegalAccessException | InstantiationException | IOException e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// // 函数处理异常返回失败
@@ -371,10 +381,10 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// return true;
// }
- @Override
- public String getTag() {
- return TAG;
- }
+// @Override
+// public String getTag() {
+// return TAG;
+// }
// @Override
// public void onBackPressed() {
@@ -386,7 +396,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
//
// @Override
// public void onYes() {
-// WinBollActivityManager.getInstance(getApplicationContext()).finishAll();
+// WinBoLLActivityManager.getInstance(getApplicationContext()).finishAll();
// }
//
// @Override
@@ -408,7 +418,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
if (item.getItemId() == R.id.item_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
- //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class);
+ //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, CallActivity.class);
}
// } else
// if (item.getItemId() == R.id.item_exit) {
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/activities/AboutActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/activities/AboutActivity.java
index c8d71cb..d447f79 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/activities/AboutActivity.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/activities/AboutActivity.java
@@ -10,14 +10,15 @@ import android.content.Context;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.contacts.R;
import cc.winboll.studio.libaes.winboll.APPInfo;
import cc.winboll.studio.libaes.winboll.AboutView;
import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
+import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
-public class AboutActivity extends WinBollActivity implements IWinBollActivity {
+public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "AboutActivity";
@@ -64,13 +65,13 @@ public class AboutActivity extends WinBollActivity implements IWinBollActivity {
);
layout.addView(aboutView, params);
- GlobalApplication.getWinBollActivityManager().add(this);
+ GlobalApplication.getWinBoLLActivityManager().add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
- GlobalApplication.getWinBollActivityManager().registeRemove(this);
+ GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
}
public AboutView CreateAboutView() {
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java
index 5ce6f7c..bea6b91 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/activities/SettingsActivity.java
@@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import cc.winboll.studio.contacts.App;
import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.adapters.PhoneConnectRuleAdapter;
import cc.winboll.studio.contacts.beans.MainServiceBean;
@@ -34,15 +35,13 @@ import cc.winboll.studio.contacts.bobulltoon.TomCat;
import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.contacts.services.MainService;
import cc.winboll.studio.contacts.views.DuInfoTextView;
-import cc.winboll.studio.libaes.winboll.APPInfo;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
+import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
import com.hjq.toast.ToastUtils;
import java.lang.reflect.Field;
import java.util.List;
-import cc.winboll.studio.contacts.App;
-public class SettingsActivity extends AppCompatActivity implements IWinBollActivity {
+public class SettingsActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "SettingsActivity";
@@ -177,6 +176,8 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv
etDunResumeSecondCount.setEnabled(!isEnableDun);
etDunResumeCount.setEnabled(!isEnableDun);
+ EditText etBoBullToonURL = findViewById(R.id.bobulltoonurl_et);
+ etBoBullToonURL.setText(Rules.getInstance(this).getBoBullToonURL());
}
public static void notifyDunInfoUpdate() {
@@ -201,6 +202,11 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv
settingsModel.setIsEnableDun(isEnableDun);
Rules.getInstance(this).saveDun();
Rules.getInstance(this).reload();
+
+ // 重新加载盾牌参数
+ etDunTotalCount.setText(Integer.toString(settingsModel.getDunTotalCount()));
+ etDunResumeSecondCount.setText(Integer.toString(settingsModel.getDunResumeSecondCount()));
+ etDunResumeCount.setText(Integer.toString(settingsModel.getDunResumeCount()));
}
void updateStreamVolumeTextView() {
@@ -233,7 +239,18 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv
}
}
+ public void onResetBoBullToonURL(View view) {
+ Rules.getInstance(this).resetDefaultBoBullToonURL();
+ EditText etBoBullToonURL = findViewById(R.id.bobulltoonurl_et);
+ etBoBullToonURL.setText(Rules.getInstance(this).getBoBullToonURL());
+ }
+
public void onDownloadBoBullToon(View view) {
+ EditText etBoBullToonURL = findViewById(R.id.bobulltoonurl_et);
+ if (!etBoBullToonURL.getText().toString().trim().equals(Rules.getInstance(this).getBoBullToonURL())) {
+ Rules.getInstance(this).setBoBullToonURL(etBoBullToonURL.getText().toString().trim());
+ }
+
final TomCat tomCat = TomCat.getInstance(this);
new Thread(new Runnable() {
@Override
@@ -247,8 +264,6 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv
}).start();
}
-
-
public void onSearchBoBullToonPhone(View view) {
TomCat tomCat = TomCat.getInstance(this);
EditText etPhone = findViewById(R.id.activitysettingsEditText1);
@@ -311,8 +326,8 @@ public class SettingsActivity extends AppCompatActivity implements IWinBollActiv
}
}
}
-
+
public void onAbout(View view) {
- App.getWinBollActivityManager().startWinBollActivity(this, AboutActivity.class);
+ App.getWinBoLLActivityManager().startWinBoLLActivity(this, AboutActivity.class);
}
}
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/activities/WinBollActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/activities/WinBollActivity.java
index afbb888..18f5d47 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/activities/WinBollActivity.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/activities/WinBollActivity.java
@@ -11,9 +11,9 @@ import android.view.MenuItem;
import androidx.appcompat.app.AppCompatActivity;
import cc.winboll.studio.libaes.beans.AESThemeBean;
import cc.winboll.studio.libaes.utils.AESThemeUtil;
-import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
+import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
-public class WinBollActivity extends AppCompatActivity implements IWinBollActivity {
+public class WinBollActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "WinBollActivity";
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/beans/SettingsModel.java b/contacts/src/main/java/cc/winboll/studio/contacts/beans/SettingsModel.java
index ed1360a..a228aff 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/beans/SettingsModel.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/beans/SettingsModel.java
@@ -14,6 +14,7 @@ import cc.winboll.studio.contacts.utils.IntUtils;
public class SettingsModel extends BaseBean {
public static final String TAG = "SettingsModel";
+
public static final int MAX_INTRANGE = 666666;
public static final int MIN_INTRANGE = 1;
@@ -27,6 +28,8 @@ public class SettingsModel extends BaseBean {
int dunResumeCount;
// 是否启用云盾
boolean isEnableDun;
+ // BoBullToon 应用模块数据请求地址
+ String szBoBullToon_URL;
public SettingsModel() {
this.dunTotalCount = 6;
@@ -34,14 +37,24 @@ public class SettingsModel extends BaseBean {
this.dunResumeSecondCount = 60;
this.dunResumeCount = 1;
this.isEnableDun = false;
+ this.szBoBullToon_URL = "";
}
- public SettingsModel(int dunTotalCount, int dunCurrentCount, int dunResumeSecondCount, int dunResumeCount, boolean isEnableDun) {
+ public SettingsModel(int dunTotalCount, int dunCurrentCount, int dunResumeSecondCount, int dunResumeCount, boolean isEnableDun, String szBoBullToon_URL) {
this.dunTotalCount = getSettingsModelRangeInt(dunTotalCount);
this.dunCurrentCount = getSettingsModelRangeInt(dunCurrentCount);
this.dunResumeSecondCount = getSettingsModelRangeInt(dunResumeSecondCount);
this.dunResumeCount = getSettingsModelRangeInt(dunResumeCount);
this.isEnableDun = isEnableDun;
+ this.szBoBullToon_URL = szBoBullToon_URL;
+ }
+
+ public void setBoBullToon_URL(String boBullToon_URL) {
+ this.szBoBullToon_URL = boBullToon_URL;
+ }
+
+ public String getBoBullToon_URL() {
+ return szBoBullToon_URL;
}
public void setDunTotalCount(int dunTotalCount) {
@@ -102,7 +115,8 @@ public class SettingsModel extends BaseBean {
jsonWriter.name("dunResumeSecondCount").value(getDunResumeSecondCount());
jsonWriter.name("dunResumeCount").value(getDunResumeCount());
jsonWriter.name("isEnableDun").value(isEnableDun());
-
+ jsonWriter.name("szBoBullToon_URL").value(getBoBullToon_URL());
+
}
@Override
@@ -118,6 +132,8 @@ public class SettingsModel extends BaseBean {
setDunResumeCount(getSettingsModelRangeInt(jsonReader.nextInt()));
} else if (name.equals("isEnableDun")) {
setIsEnableDun(jsonReader.nextBoolean());
+ } else if (name.equals("szBoBullToon_URL")) {
+ setBoBullToon_URL(jsonReader.nextString());
} else {
return false;
}
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/bobulltoon/TomCat.java b/contacts/src/main/java/cc/winboll/studio/contacts/bobulltoon/TomCat.java
index b1b8273..6141d7c 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/bobulltoon/TomCat.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/bobulltoon/TomCat.java
@@ -6,6 +6,8 @@ package cc.winboll.studio.contacts.bobulltoon;
* @Describe 汤姆猫管家 :使用 BoBullToon 项目,对通讯地址进行筛选判断的好朋友。
*/
import android.content.Context;
+import cc.winboll.studio.contacts.R;
+import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.libappbase.LogUtils;
import com.hjq.toast.ToastUtils;
import java.io.File;
@@ -28,6 +30,7 @@ public class TomCat {
public static final String TAG = "TomCat";
List listPhoneBoBullToon = new ArrayList();
+ String mszBoBullToon_URL;
static volatile TomCat _TomCat;
Context mContext;
@@ -41,8 +44,12 @@ public class TomCat {
}
return _TomCat;
}
+
+ public String getDefaultBobulltoonUrl() {
+ return mContext.getString(R.string.default_bobulltoon_url);
+ }
- void downloadAndExtractZip(String zipUrl, String destinationFolder) throws IOException {
+ boolean downloadAndExtractZip(String zipUrl, String destinationFolder) throws IOException {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(zipUrl)
@@ -95,13 +102,16 @@ public class TomCat {
// 删除临时 ZIP 文件
tempZipFile.delete();
LogUtils.d(TAG, "已更新 BoBullToon 数据");
+ return true;
} catch (Exception e) {
+ ToastUtils.show(e.getMessage());
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
+ return false;
}
}
public boolean downloadBoBullToon() {
- String zipUrl = "http://10.8.0.12:3000/Studio/BoBullToon/archive/main.zip"; // 替换为实际的 ZIP 文件 URL
+ String zipUrl = Rules.getInstance(mContext).getBoBullToonURL(); // 替换为实际的 ZIP 文件 URL
String destinationFolder = getWorkingFolder().getPath(); // 替换为实际的目标文件夹路径
try {
// 删除旧文件
@@ -113,9 +123,11 @@ public class TomCat {
}
// 更新新文件
- downloadAndExtractZip(zipUrl, destinationFolder);
- LogUtils.d(TAG, "ZIP 文件下载并解压成功。");
- return true;
+ if(downloadAndExtractZip(zipUrl, destinationFolder)) {
+ LogUtils.d(TAG, "ZIP 文件下载并解压成功。");
+ return true;
+ }
+ return false;
} catch (IOException e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
}
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/dun/Rules.java b/contacts/src/main/java/cc/winboll/studio/contacts/dun/Rules.java
index 97295ee..9907a35 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/dun/Rules.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/dun/Rules.java
@@ -18,6 +18,7 @@ import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Pattern;
+import cc.winboll.studio.contacts.bobulltoon.TomCat;
public class Rules {
@@ -84,6 +85,20 @@ public class Rules {
PhoneConnectRuleModel.saveBeanList(mContext, _PhoneConnectRuleModelList, PhoneConnectRuleModel.class);
}
+ public void resetDefaultBoBullToonURL() {
+ mSettingsModel.setBoBullToon_URL(TomCat.getInstance(mContext).getDefaultBobulltoonUrl());
+ saveDun();
+ }
+
+ public void setBoBullToonURL(String szUrl) {
+ mSettingsModel.setBoBullToon_URL(szUrl);
+ saveDun();
+ }
+
+ public String getBoBullToonURL() {
+ return mSettingsModel.getBoBullToon_URL();
+ }
+
public void loadDun() {
mSettingsModel = SettingsModel.loadBean(mContext, SettingsModel.class);
if (mSettingsModel == null) {
@@ -109,8 +124,12 @@ public class Rules {
boolean isDefend = false; // 盾牌是否生效
boolean isConnect = true; // 防御结果是否连接
+ // 进行盾牌层数预计缩减计算
+ int nDunCurrentCount = mSettingsModel.getDunCurrentCount() - 1;
+ LogUtils.d(TAG, String.format("nDunCurrentCount : %d", nDunCurrentCount));
+
// 如果盾值小于1,则解除防御
- if (!isDefend && mSettingsModel.getDunCurrentCount() < 1) {
+ if (!isDefend && nDunCurrentCount < 1) {
// 盾层为1以下,防御解除
LogUtils.d(TAG, "盾层为1以下,防御解除");
isDefend = true;
@@ -174,17 +193,17 @@ public class Rules {
// 就减少防御盾牌层数。
// 每校验一次规则,云盾防御层数减1
// 当云盾防御层数为0时,再次进行以下程序段则恢复满值防御。
- int newDunCount = mSettingsModel.getDunCurrentCount() - 1;
+ int newDunCount = nDunCurrentCount;
LogUtils.d(TAG, String.format("新的防御层数预计为 %d", newDunCount));
- // 保证盾值在[0,DunTotalCount]之内其他值一律重置为 DunTotalCount。
- if (newDunCount < 0 || newDunCount > mSettingsModel.getDunTotalCount()) {
- mSettingsModel.setDunCurrentCount(mSettingsModel.getDunTotalCount());
- LogUtils.d(TAG, String.format("盾值不在[0,%d]区间,恢复防御最大值%d", mSettingsModel.getDunTotalCount(), mSettingsModel.getDunTotalCount()));
- } else {
+ // 保证盾值在[1,DunTotalCount]之内其他值一律重置为 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();
diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java b/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java
index b948631..5f0bbda 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java
@@ -18,6 +18,7 @@ import android.content.ServiceConnection;
import android.media.AudioManager;
import android.os.Binder;
import android.os.IBinder;
+import cc.winboll.studio.contacts.App;
import cc.winboll.studio.contacts.beans.MainServiceBean;
import cc.winboll.studio.contacts.beans.RingTongBean;
import cc.winboll.studio.contacts.bobulltoon.TomCat;
@@ -29,11 +30,9 @@ import cc.winboll.studio.contacts.services.MainService;
import cc.winboll.studio.contacts.threads.MainServiceThread;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.SOS;
+import cc.winboll.studio.libappbase.winboll.WinBoLL;
import java.util.Timer;
import java.util.TimerTask;
-import cc.winboll.studio.libappbase.sos.WinBoll;
-import cc.winboll.studio.contacts.App;
-import cc.winboll.studio.libappbase.sos.APPModel;
public class MainService extends Service {
@@ -129,11 +128,11 @@ public class MainService extends Service {
isServiceRunning = true;
// 唤醒守护进程
wakeupAndBindAssistant();
- // 召唤 WinBoll APP 绑定本服务
+ // 召唤 WinBoLL APP 绑定本服务
if (App.isDebuging()) {
- WinBoll.bindToAPPBaseBeta(this, MainService.class.getName());
+ WinBoLL.bindToAPPBaseBeta(this, MainService.class.getName());
} else {
- WinBoll.bindToAPPBase(this, MainService.class.getName());
+ WinBoLL.bindToAPPBase(this, MainService.class.getName());
}
// 初始化服务运行参数
diff --git a/contacts/src/main/res/layout/activity_settings.xml b/contacts/src/main/res/layout/activity_settings.xml
index d1c90ce..c0afc54 100644
--- a/contacts/src/main/res/layout/activity_settings.xml
+++ b/contacts/src/main/res/layout/activity_settings.xml
@@ -195,16 +195,29 @@
android:text="拨不通电话记录查询:"/>
+
+
+
+
diff --git a/contacts/src/main/res/values/colors.xml b/contacts/src/main/res/values/colors.xml
index 063cdb0..5b13816 100644
--- a/contacts/src/main/res/values/colors.xml
+++ b/contacts/src/main/res/values/colors.xml
@@ -1,6 +1,6 @@
-
+
#FF196ABC
#FF002B57
#FF80BFFF
diff --git a/contacts/src/main/res/values/strings.xml b/contacts/src/main/res/values/strings.xml
index cc96fb0..9097288 100644
--- a/contacts/src/main/res/values/strings.xml
+++ b/contacts/src/main/res/values/strings.xml
@@ -2,5 +2,6 @@
Contacts
+ http://10.8.0.12:3000/Studio/BoBullToon/archive/main.zip
diff --git a/contacts/src/main/res/values/styles.xml b/contacts/src/main/res/values/styles.xml
index 8380acf..b9fe8d7 100644
--- a/contacts/src/main/res/values/styles.xml
+++ b/contacts/src/main/res/values/styles.xml
@@ -1,6 +1,6 @@
-
-