Compare commits

...

4 Commits

Author SHA1 Message Date
7e061d18bb <contacts>APK 15.3.20 release Publish. 2025-10-18 13:43:14 +08:00
ZhanGSKen
0afe1de9bd 编译参数修复 2025-10-18 13:42:39 +08:00
ZhanGSKen
98874bedc9 修改联系人编辑界面未弹出问题。 2025-10-18 13:40:15 +08:00
ZhanGSKen
72cbe4f066 跳转吐司类引用库 2025-10-18 13:14:14 +08:00
13 changed files with 29 additions and 35 deletions

View File

@@ -66,7 +66,7 @@ dependencies {
// 应用介绍页类库 // 应用介绍页类库
api 'io.github.medyo:android-about-page:2.0.0' api 'io.github.medyo:android-about-page:2.0.0'
// 吐司类库 // 吐司类库
api 'com.github.getActivity:ToastUtils:10.5' //api 'com.github.getActivity:ToastUtils:10.5'
// 网络连接类库 // 网络连接类库
api 'com.squareup.okhttp3:okhttp:4.4.1' api 'com.squareup.okhttp3:okhttp:4.4.1'

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Sat Oct 18 13:05:19 HKT 2025 #Sat Oct 18 13:43:14 HKT 2025
stageCount=20 stageCount=21
libraryProject= libraryProject=
baseVersion=15.3 baseVersion=15.3
publishVersion=15.3.19 publishVersion=15.3.20
buildCount=0 buildCount=0
baseBetaVersion=15.3.20 baseBetaVersion=15.3.21

View File

@@ -7,8 +7,8 @@ package cc.winboll.studio.contacts;
*/ */
import android.view.Gravity; import android.view.Gravity;
import cc.winboll.studio.libappbase.GlobalApplication; import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import cc.winboll.studio.libappbase.winboll.WinBoLLActivityManager; import cc.winboll.studio.libappbase.winboll.WinBoLLActivityManager;
import com.hjq.toast.ToastUtils;
public class App extends GlobalApplication { public class App extends GlobalApplication {
@@ -30,7 +30,7 @@ public class App extends GlobalApplication {
// 设置 Toast 布局样式 // 设置 Toast 布局样式
//ToastUtils.setView(R.layout.toast_custom_view); //ToastUtils.setView(R.layout.toast_custom_view);
//ToastUtils.setStyle(new WhiteToastStyle()); //ToastUtils.setStyle(new WhiteToastStyle());
ToastUtils.setGravity(Gravity.BOTTOM, 0, 200); //ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
} }

View File

@@ -36,8 +36,8 @@ import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.contacts.services.MainService; import cc.winboll.studio.contacts.services.MainService;
import cc.winboll.studio.contacts.views.DuInfoTextView; import cc.winboll.studio.contacts.views.DuInfoTextView;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.utils.ToastUtils;
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.lang.reflect.Field;
import java.util.List; import java.util.List;

View File

@@ -23,7 +23,7 @@ import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.beans.CallLogModel; import cc.winboll.studio.contacts.beans.CallLogModel;
import cc.winboll.studio.contacts.utils.ContactUtils; import cc.winboll.studio.contacts.utils.ContactUtils;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
import com.hjq.toast.ToastUtils; import cc.winboll.studio.libappbase.utils.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;

View File

@@ -21,10 +21,10 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.beans.ContactModel; import cc.winboll.studio.contacts.beans.ContactModel;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
import com.hjq.toast.ToastUtils;
import java.util.List;
import cc.winboll.studio.contacts.utils.ContactUtils; import cc.winboll.studio.contacts.utils.ContactUtils;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.util.List;
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> { public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> {
@@ -71,7 +71,9 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV
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();
} else if (nItemId == R.id.item_calllog_phonenumber_edit_contact) { } else if (nItemId == R.id.item_calllog_phonenumber_edit_contact) {
//ToastUtils.show("Test");
Long nContactId = ContactUtils.getContactIdByPhone(mContext, contact.getNumber()); Long nContactId = ContactUtils.getContactIdByPhone(mContext, contact.getNumber());
//ToastUtils.show(String.format("%d", nContactId));
ContactUtils.jumpToEditContact(mContext, contact.getNumber(), nContactId); ContactUtils.jumpToEditContact(mContext, contact.getNumber(), nContactId);
} }

View File

@@ -7,7 +7,6 @@ package cc.winboll.studio.contacts.adapters;
*/ */
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
@@ -21,9 +20,8 @@ import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.beans.PhoneConnectRuleModel; import cc.winboll.studio.contacts.beans.PhoneConnectRuleModel;
import cc.winboll.studio.contacts.dun.Rules; import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.contacts.views.LeftScrollView; import cc.winboll.studio.contacts.views.LeftScrollView;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog; import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog;
import com.hjq.toast.ToastUtils; import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -9,7 +9,7 @@ import android.content.Context;
import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.dun.Rules; import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import com.hjq.toast.ToastUtils; import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.io.File; import java.io.File;
import java.io.FileFilter; import java.io.FileFilter;
import java.io.FileOutputStream; import java.io.FileOutputStream;

View File

@@ -31,7 +31,7 @@ import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.adapters.ContactAdapter; import cc.winboll.studio.contacts.adapters.ContactAdapter;
import cc.winboll.studio.contacts.beans.ContactModel; import cc.winboll.studio.contacts.beans.ContactModel;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import com.hjq.toast.ToastUtils; import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@@ -95,7 +95,7 @@ public class ContactsFragment extends Fragment {
recyclerView = (RecyclerView) view.findViewById(R.id.contacts_recycler_view); recyclerView = (RecyclerView) view.findViewById(R.id.contacts_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
contactList = new ArrayList<ContactModel>(); contactList = new ArrayList<ContactModel>();
contactAdapter = new ContactAdapter(getContext(), contactList); contactAdapter = new ContactAdapter(getActivity(), contactList);
recyclerView.setAdapter(contactAdapter); recyclerView.setAdapter(contactAdapter);
// 初始隐藏列表,数据加载后显示 // 初始隐藏列表,数据加载后显示
recyclerView.setVisibility(View.GONE); recyclerView.setVisibility(View.GONE);

View File

@@ -14,7 +14,6 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.R;
import cc.winboll.studio.libappbase.LogView; import cc.winboll.studio.libappbase.LogView;
import com.hjq.toast.ToastUtils;
public class LogFragment extends Fragment { public class LogFragment extends Fragment {

View File

@@ -10,7 +10,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import cc.winboll.studio.contacts.services.MainService; import cc.winboll.studio.contacts.services.MainService;
import com.hjq.toast.ToastUtils; import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
public class MainReceiver extends BroadcastReceiver { public class MainReceiver extends BroadcastReceiver {

View File

@@ -13,6 +13,7 @@ import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -136,7 +137,7 @@ public class ContactUtils {
intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE, phoneNumber); intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE, phoneNumber);
mContext.startActivity(intent); mContext.startActivity(intent);
} }
/** /**
* 跳转至系统编辑联系人界面(适配小米等定制机型) * 跳转至系统编辑联系人界面(适配小米等定制机型)
* @param context 上下文Activity/Service/Fragment * @param context 上下文Activity/Service/Fragment
@@ -153,9 +154,8 @@ public class ContactUtils {
// 构建联系人的Uri格式content://contacts/people/[contactId],系统标准格式) // 构建联系人的Uri格式content://contacts/people/[contactId],系统标准格式)
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
intent.setData(contactUri); intent.setData(contactUri);
} //ToastUtils.show("1");
// 场景B未知ID通过电话号码匹配需系统支持号码匹配小米机型兼容 } else if (phoneNumber != null && !phoneNumber.isEmpty()) {
else if (phoneNumber != null && !phoneNumber.isEmpty()) {
// 方式1小米等机型兼容的“通过号码定位联系人”参数部分系统认此参数 // 方式1小米等机型兼容的“通过号码定位联系人”参数部分系统认此参数
//intent.putExtra(ContactsContract.Intents.Insert.PHONE_NUMBER, phoneNumber); //intent.putExtra(ContactsContract.Intents.Insert.PHONE_NUMBER, phoneNumber);
// 方式2补充系统标准的“数据Uri”强化匹配避免参数被定制系统忽略 // 方式2补充系统标准的“数据Uri”强化匹配避免参数被定制系统忽略
@@ -173,15 +173,11 @@ public class ContactUtils {
} }
// 启动活动(加防护,避免无联系人应用崩溃) // 启动活动(加防护,避免无联系人应用崩溃)
if (intent.resolveActivity(context.getPackageManager()) != null) { // 小米机型在Service/非Activity中调用需加NEW_TASK标志否则可能无法启动
// 小米机型在Service/非Activity中调用需加NEW_TASK标志否则可能无法启动 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);
context.startActivity(intent);
} else {
LogUtils.d(TAG, "编辑联系人失败:设备未安装联系人应用");
}
} }
/** /**
* 通过电话号码查询联系人ID适配小米机型解决编辑时匹配不稳定问题 * 通过电话号码查询联系人ID适配小米机型解决编辑时匹配不稳定问题
* @param context 上下文 * @param context 上下文
@@ -215,5 +211,5 @@ public class ContactUtils {
} }
return -1L; // 无匹配联系人 return -1L; // 无匹配联系人
} }
} }

View File

@@ -13,9 +13,8 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.threads.MainServiceThread;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import com.hjq.toast.ToastUtils; import cc.winboll.studio.libappbase.utils.ToastUtils;
public class APPStatusWidget extends AppWidgetProvider { public class APPStatusWidget extends AppWidgetProvider {