From 5779f195f88d10cc7c0e06fc9b41589c8cf5e14e Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sat, 8 Mar 2025 04:36:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AEUI=E4=B8=BA=E6=8B=96=E5=8A=A8?= =?UTF-8?q?=E6=8B=A8=E5=8F=B7=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contacts/build.gradle | 34 ++++++++++------ contacts/build.properties | 4 +- .../winboll/studio/contacts/MainActivity.java | 2 - .../contacts/activities/SettingsActivity.java | 10 ++--- .../contacts/adapters/CallLogAdapter.java | 28 ++++++------- .../contacts/adapters/ContactAdapter.java | 15 ++++--- .../studio/contacts/services/MainService.java | 22 ++++++++--- .../contacts/threads/MainServiceThread.java | 4 -- .../studio/contacts/utils/ContactUtils.java | 39 +++++++++++++++++-- contacts/src/main/res/drawable/ic_call.xml | 11 ++++++ .../src/main/res/layout/item_call_log.xml | 12 +++--- contacts/src/main/res/layout/item_contact.xml | 8 ++-- 12 files changed, 124 insertions(+), 65 deletions(-) create mode 100644 contacts/src/main/res/drawable/ic_call.xml diff --git a/contacts/build.gradle b/contacts/build.gradle index 7efb0a9..9d25f3e 100644 --- a/contacts/build.gradle +++ b/contacts/build.gradle @@ -41,29 +41,41 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - - implementation 'com.squareup.okhttp3:okhttp:4.4.1' + api fileTree(dir: 'libs', include: ['*.jar']) + // 权限请求框架:https://github.com/getActivity/XXPermissions + implementation 'com.github.getActivity:XXPermissions:18.63' + // 下拉控件 + implementation 'com.baoyz.pullrefreshlayout:library:1.2.0' + // 拼音搜索 // https://mvnrepository.com/artifact/com.github.open-android/pinyin4j implementation 'com.github.open-android:pinyin4j:2.5.0' - + // SSH + implementation 'com.jcraft:jsch:0.1.55' + // Html 解析 + implementation 'org.jsoup:jsoup:1.13.1' + // 二维码类库 + implementation 'com.google.zxing:core:3.4.1' + implementation 'com.journeyapps:zxing-android-embedded:3.6.0' + // 应用介绍页类库 implementation 'io.github.medyo:android-about-page:2.0.0' + // 吐司类库 implementation 'com.github.getActivity:ToastUtils:10.5' + // 网络连接类库 + implementation 'com.squareup.okhttp3:okhttp:4.4.1' + // Android 类库 implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.viewpager:viewpager:1.0.0' + implementation 'androidx.vectordrawable:vectordrawable:1.1.0' + implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' implementation 'androidx.fragment:fragment:1.1.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'cc.winboll.studio:libapputils:9.3.2' - implementation 'cc.winboll.studio:libappbase:1.5.6' + implementation 'cc.winboll.studio:libappbase:2.1.3' + implementation 'cc.winboll.studio:libapputils:9.4.2' + implementation 'cc.winboll.studio:libaes:7.6.6' } diff --git a/contacts/build.properties b/contacts/build.properties index 4188981..a37a4b7 100644 --- a/contacts/build.properties +++ b/contacts/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Thu Mar 06 21:44:44 HKT 2025 +#Fri Mar 07 20:34:32 GMT 2025 stageCount=13 libraryProject= baseVersion=1.0 publishVersion=1.0.12 -buildCount=0 +buildCount=2 baseBetaVersion=1.0.13 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 f199019..3b67c4b 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java @@ -35,9 +35,7 @@ import cc.winboll.studio.contacts.services.MainService; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogView; import cc.winboll.studio.libapputils.app.IWinBollActivity; -import cc.winboll.studio.libapputils.app.WinBollActivityManager; import cc.winboll.studio.libapputils.bean.APPInfo; -import cc.winboll.studio.libapputils.view.YesNoAlertDialog; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; import java.util.List; 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 366b604..5bbabad 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 @@ -29,17 +29,17 @@ import cc.winboll.studio.contacts.adapters.PhoneConnectRuleAdapter; import cc.winboll.studio.contacts.beans.MainServiceBean; import cc.winboll.studio.contacts.beans.PhoneConnectRuleModel; import cc.winboll.studio.contacts.beans.RingTongBean; +import cc.winboll.studio.contacts.beans.SettingsModel; 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.libappbase.IWinBollActivity; -import cc.winboll.studio.libappbase.bean.APPInfo; +import cc.winboll.studio.contacts.views.DuInfoTextView; +import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.libapputils.app.IWinBollActivity; +import cc.winboll.studio.libapputils.bean.APPInfo; import com.hjq.toast.ToastUtils; import java.lang.reflect.Field; import java.util.List; -import cc.winboll.studio.contacts.beans.SettingsModel; -import cc.winboll.studio.contacts.views.DuInfoTextView; -import cc.winboll.studio.libappbase.LogUtils; public class SettingsActivity extends AppCompatActivity implements IWinBollActivity { diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java b/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java index 3dde402..86d0368 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java @@ -5,10 +5,8 @@ package cc.winboll.studio.contacts.adapters; * @Date 2025/02/26 13:09:32 * @Describe CallLogAdapter */ -import android.content.ContentResolver; +import android.content.Context; import android.content.Intent; -import android.database.Cursor; -import android.provider.ContactsContract; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -18,15 +16,12 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.beans.CallLogModel; +import cc.winboll.studio.contacts.utils.ContactUtils; +import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; import com.hjq.toast.ToastUtils; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Locale; -import java.util.Map; -import cc.winboll.studio.contacts.utils.ContactUtils; -import android.content.Context; public class CallLogAdapter extends RecyclerView.Adapter { public static final String TAG = "CallLogAdapter"; @@ -34,7 +29,7 @@ public class CallLogAdapter extends RecyclerView.Adapter callLogList; ContactUtils mContactUtils; Context mContext; - + public CallLogAdapter(Context context, List callLogList) { mContext = context; this.mContactUtils = ContactUtils.getInstance(mContext); @@ -55,9 +50,14 @@ public class CallLogAdapter extends RecyclerView.Adapter { @@ -43,9 +44,13 @@ public class ContactAdapter extends RecyclerView.Adapter contactMap = new HashMap<>(); - contactMap.put(getSimplePhone(phoneNumber), displayName); + contactMap.put(formatToSimplePhoneNumber(phoneNumber), displayName); } cursor.close(); } @@ -52,11 +52,42 @@ public class ContactUtils { } public String getContactsName(String phone) { - String result = contactMap.get(getSimplePhone(phone)); + String result = contactMap.get(formatToSimplePhoneNumber(phone)); return result == null ? "[NoInContacts]" : result; } - static String getSimplePhone(String phone) { - return phone.replaceAll("[+\\s]", ""); +// static String getSimplePhone(String phone) { +// return phone.replaceAll("[+\\s]", ""); +// } + + public static String formatToSimplePhoneNumber(String number) { + // 去除所有空格和非数字字符 + return number.replaceAll("[^0-9]", ""); + } + + public static String getDisplayNameByPhone(Context context, String phoneNumber) { + String displayName = null; + ContentResolver resolver = context.getContentResolver(); + String[] projection = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME}; + Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.NUMBER + "=?", new String[]{formatToSimplePhoneNumber(phoneNumber)}, null); + if (cursor!= null && cursor.moveToFirst()) { + displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); + cursor.close(); + } + return displayName; + } + + public static String formatToSpacePhoneNumber(String simpleNumber) { + // 去除所有空格和非数字字符 + StringBuilder sbSpaceNumber = new StringBuilder(); + String regex = "^1[0-9]{10}$"; + if(simpleNumber.matches(regex)) { + sbSpaceNumber.append(simpleNumber.substring(0,2)); + sbSpaceNumber.append(" "); + sbSpaceNumber.append(simpleNumber.substring(3,6)); + sbSpaceNumber.append(" "); + sbSpaceNumber.append(simpleNumber.substring(7,10)); + } + return sbSpaceNumber.toString(); } } diff --git a/contacts/src/main/res/drawable/ic_call.xml b/contacts/src/main/res/drawable/ic_call.xml new file mode 100644 index 0000000..c5802bb --- /dev/null +++ b/contacts/src/main/res/drawable/ic_call.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/contacts/src/main/res/layout/item_call_log.xml b/contacts/src/main/res/layout/item_call_log.xml index 6cbace9..6b0f7bd 100644 --- a/contacts/src/main/res/layout/item_call_log.xml +++ b/contacts/src/main/res/layout/item_call_log.xml @@ -3,13 +3,13 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content"> android:padding="16dp"> @@ -28,12 +28,10 @@ android:textSize="14sp" android:layout_marginTop="4dp" /> -