Compare commits

..

19 Commits

Author SHA1 Message Date
ZhanGSKen
fa338ec8c7 <apputils>APK 15.8.6 release Publish. 2025-09-01 07:56:11 +08:00
ZhanGSKen
7a3a1f4bcd 添加正则表达式前置预防针工具类 2025-09-01 07:51:20 +08:00
ZhanGSKen
ad991e3da2 <libapputils>Library Release 15.8.5 2025-08-31 23:39:23 +08:00
ZhanGSKen
c0ff228845 <libapputils>Library Release 15.8.5 2025-08-31 04:53:26 +08:00
ZhanGSKen
a0fe8f17a8 <apputils>APK 15.8.5 release Publish. 2025-08-31 04:53:04 +08:00
ZhanGSKen
16bd40fc59 Merge remote-tracking branch 'gitee/appbase' into apputils 2025-08-31 04:51:48 +08:00
ZhanGSKen
ffaf683c54 <libapputils>Library Release 15.8.4 2025-08-31 04:46:19 +08:00
ZhanGSKen
26f5f8d3db 编译参数修复 2025-08-31 04:45:24 +08:00
ZhanGSKen
917e25cdc8 更新基础类库版本 2025-08-31 04:41:42 +08:00
ZhanGSKen
707bed52c7 <libappbase>Library Release 15.9.5 2025-08-31 04:33:11 +08:00
ZhanGSKen
b7f8b76ace <libapputils>Library Release 15.8.4 2025-08-28 21:11:05 +08:00
ZhanGSKen
38fe941a8b <libappbase>Library Release 15.9.5 2025-08-28 20:56:48 +08:00
ZhanGSKen
e80d7e7b03 <appbase>APK 15.9.5 release Publish. 2025-08-18 03:56:26 +08:00
ZhanGSKen
6e0a833fde <appbase>APK 15.9.4 release Publish. 2025-08-17 21:30:42 +08:00
ZhanGSKen
c596ee5fa4 <appbase>APK 15.9.3 release Publish. 2025-08-17 21:10:44 +08:00
ZhanGSKen
5e99f1278e <appbase>APK 15.9.2 release Publish. 2025-08-17 19:23:49 +08:00
ZhanGSKen
b7158d1ebd 添加项目关键配置说明 2025-08-15 21:39:22 +08:00
ZhanGSKen
9b51250ebf Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-08-15 20:53:02 +08:00
ZhanGSKen
69187e3ed0 更新类库 2025-06-28 13:04:03 +08:00
15 changed files with 62 additions and 105 deletions

View File

@@ -115,6 +115,7 @@
# 本项目要实际运用需要注意以下几个步骤:
# 在项目根目录下:
## ★. 项目模块编译环境设置(必须)settings.gradle-demo 要复制为 settings.gradle并取消相应项目模块的注释。
## ★. 项目模块编译环境设置(必须) 在根目录拷贝 gradle.properties-androidx-demo 或者 gradle.properties-android-demo 文件为 gradle.properties。
## ★. 项目 Android SDK 编译环境设置(可选)local.properties-demo 要复制为 local.properties并按需要设置 Android SDK 目录。
## ★. 应用签名密钥 keystore 设置问题。一般调试编译只需用【Termux】cd 进 GenKeyStore 目录执行 $ bash gen_debug_keystore.sh 命令即可完成设置。
## ☆. 应用 WiBoLL 签名密钥配置问题<非必须考虑>。设置时需要 clone 【keystore】模块源码并拷贝模块目录的 appkey.jks 与 appkey.keystore 到项目根目录即可。

View File

@@ -67,7 +67,7 @@ dependencies {
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
//api 'androidx.fragment:fragment:1.1.0'
api 'cc.winboll.studio:libaes:15.8.0'
api 'cc.winboll.studio:libapputils:15.8.2'
api 'cc.winboll.studio:libappbase:15.8.2'
api 'cc.winboll.studio:libaes:15.9.2'
api 'cc.winboll.studio:libapputils:15.8.4'
api 'cc.winboll.studio:libappbase:15.8.4'
}

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Jun 19 12:49:47 GMT 2025
#Sat Jun 28 05:02:54 GMT 2025
stageCount=0
libraryProject=
baseVersion=15.0
publishVersion=15.0.0
buildCount=26
buildCount=27
baseBetaVersion=15.0.1

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Jul 17 11:39:14 HKT 2025
stageCount=2
#Sun Aug 31 04:33:09 CST 2025
stageCount=6
libraryProject=libappbase
baseVersion=15.9
publishVersion=15.9.1
publishVersion=15.9.5
buildCount=0
baseBetaVersion=15.9.2
baseBetaVersion=15.9.6

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Tue Jun 03 15:05:48 HKT 2025
stageCount=5
#Mon Sep 01 07:56:11 HKT 2025
stageCount=7
libraryProject=libapputils
baseVersion=15.8
publishVersion=15.8.4
publishVersion=15.8.6
buildCount=0
baseBetaVersion=15.8.5
baseBetaVersion=15.8.7

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Tue Aug 26 01:37:58 HKT 2025
stageCount=15
#Thu Jul 17 09:57:24 HKT 2025
stageCount=12
libraryProject=
baseVersion=15.3
publishVersion=15.3.14
publishVersion=15.3.11
buildCount=0
baseBetaVersion=15.3.15
baseBetaVersion=15.3.12

View File

@@ -40,10 +40,6 @@ public class CallLogAdapter extends RecyclerView.Adapter<CallLogAdapter.CallLogV
this.mContactUtils = ContactUtils.getInstance(mContext);
this.callLogList = callLogList;
}
public void relaodContacts() {
this.mContactUtils.relaodContacts();
}
@NonNull
@Override

View File

@@ -11,7 +11,6 @@ import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.libappbase.LogUtils;
import com.hjq.toast.ToastUtils;
import java.io.File;
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -155,62 +154,6 @@ public class TomCat {
File getWorkingFolder() {
return mContext.getExternalFilesDir(TAG);
}
public File getBoBullToonDataFolder() {
File fCheckRoot = getWorkingFolder();
if (fCheckRoot == null || !fCheckRoot.exists()) {
return fCheckRoot;
}
// 递归查找符合条件的文件夹
File targetFolder = findTargetFolder(fCheckRoot);
return targetFolder != null ? targetFolder : fCheckRoot;
}
/**
* 递归查找同时包含LICENSE和README.md文件的文件夹
*/
private File findTargetFolder(File currentFolder) {
// 检查当前文件夹是否符合条件
if (hasRequiredFiles(currentFolder)) {
return currentFolder;
}
// 查找子文件夹Java 7不支持方法引用用匿名内部类过滤
File[] subFolders = currentFolder.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory(); // 仅保留子文件夹
}
});
if (subFolders != null) {
for (File subFolder : subFolders) {
File result = findTargetFolder(subFolder);
if (result != null) {
return result;
}
}
}
return null;
}
/**
* 检查文件夹中是否同时存在LICENSE和README.md文件
*/
private boolean hasRequiredFiles(File folder) {
if (folder == null || !folder.isDirectory()) {
return false;
}
// 检查两个文件是否同时存在且均为文件(非文件夹)
File licenseFile = new File(folder, "LICENSE");
File readmeFile = new File(folder, "README.md");
return licenseFile.exists() && licenseFile.isFile()
&& readmeFile.exists() && readmeFile.isFile();
}
public void cleanBoBullToon() {
String destinationFolder = getWorkingFolder().getPath(); // 替换为实际的目标文件夹路径
@@ -227,9 +170,9 @@ public class TomCat {
public boolean loadPhoneBoBullToon() {
listPhoneBoBullToon.clear();
File fBoBullToon = getBoBullToonDataFolder();
File fBoBullToon = new File(getWorkingFolder(), "bobulltoon");
if (fBoBullToon.exists()) {
LogUtils.d(TAG, String.format("getBoBullToonDataFolder() %s", getWorkingFolder()));
LogUtils.d(TAG, String.format("getWorkingFolder() %s", getWorkingFolder()));
for (File userFolder : fBoBullToon.listFiles()) {
if (userFolder.isDirectory()) {
for (File recordFile : userFolder.listFiles()) {

View File

@@ -161,12 +161,4 @@ public class CallLogFragment extends Fragment {
_CallLogFragment.triggerUpdate();
}
}
@Override
public void onResume() {
super.onResume();
//ToastUtils.show("onResume");
callLogAdapter.relaodContacts();
readCallLog(); // 窗口回显时更新通话记录
}
}

View File

@@ -163,12 +163,5 @@ public class ContactsFragment extends Fragment {
}
contactAdapter.notifyDataSetChanged();
}
@Override
public void onResume() {
super.onResume();
//ToastUtils.show("onResume");
readContacts(); // 窗口回显时更新联系人列表
}
}

View File

@@ -2,6 +2,6 @@
<resources>
<string name="app_name">Contacts</string>
<string name="default_bobulltoon_url">https://gitee.com/zhangsken/bobulltoon/repository/archive/main.zip</string>
<string name="default_bobulltoon_url">https://gitea.winboll.cc/Studio/BoBullToon/archive/main.zip</string>
</resources>

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Jul 17 11:39:14 HKT 2025
stageCount=2
#Mon Aug 18 03:56:26 HKT 2025
stageCount=6
libraryProject=libappbase
baseVersion=15.9
publishVersion=15.9.1
publishVersion=15.9.5
buildCount=0
baseBetaVersion=15.9.2
baseBetaVersion=15.9.6

View File

@@ -21,7 +21,7 @@ android {
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api 'cc.winboll.studio:libappbase:15.8.2'
api 'cc.winboll.studio:libappbase:15.9.5'
// 二维码类库
api 'com.google.zxing:core:3.4.1'

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Tue Jun 03 15:05:42 HKT 2025
stageCount=5
#Mon Sep 01 07:56:11 HKT 2025
stageCount=7
libraryProject=libapputils
baseVersion=15.8
publishVersion=15.8.4
publishVersion=15.8.6
buildCount=0
baseBetaVersion=15.8.5
baseBetaVersion=15.8.7

View File

@@ -0,0 +1,32 @@
package cc.winboll.studio.libapputils.utils;
/**
* @Author ZhanGSKen&豆包大模型<zhangsken@188.com>
* @Date 2025/09/01 07:49
* @Describe .* 前置预防针
regex pointer preventive injection
简称 RegexPPi
*/
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexPPiUtils {
public static final String TAG = "RegexPPiUtils";
//
// 检验文本是否满足适合正则表达式模式计算
//
public static boolean isPPiOK(String text) {
//String text = "这里是一些任意的文本内容";
String regex = ".*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
/*if (matcher.matches()) {
System.out.println("文本满足该正则表达式模式");
} else {
System.out.println("文本不满足该正则表达式模式");
}*/
return matcher.matches();
}
}