From 1d2fc9f1729990dfadf6bef4b99f04381f092edf Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Tue, 22 Jul 2025 09:11:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BE=AE=E4=BF=A1=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AE=89=E8=A3=85=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../selecttospeak/SelectToSpeakService.java | 35 +++++++++++-------- .../activity/main/MainActivity.java | 2 +- .../activity/scheme/SchemeActivity.java | 2 +- .../elderlyassistant/utils/ApkUtils.java | 23 ++++++++++++ .../res/layout/activity_write_message.xml | 6 ++-- 5 files changed, 49 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/com/ttstd/elderlyassistant/utils/ApkUtils.java diff --git a/app/src/main/java/com/google/android/accessibility/selecttospeak/SelectToSpeakService.java b/app/src/main/java/com/google/android/accessibility/selecttospeak/SelectToSpeakService.java index ecd6714..057c5b0 100644 --- a/app/src/main/java/com/google/android/accessibility/selecttospeak/SelectToSpeakService.java +++ b/app/src/main/java/com/google/android/accessibility/selecttospeak/SelectToSpeakService.java @@ -25,6 +25,7 @@ import com.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; import com.ttstd.elderlyassistant.bean.ContactInfo; import com.ttstd.elderlyassistant.config.CommonConfig; +import com.ttstd.elderlyassistant.utils.ApkUtils; import java.util.List; import java.util.Optional; @@ -119,8 +120,8 @@ public class SelectToSpeakService extends AccessibilityService { public int onStartCommand(Intent intent, int flags, int startId) { Log.e(TAG, "onStartCommand: "); if (intent != null) { - mContact = (ContactInfo) intent.getSerializableExtra("WechatInfo"); - Log.e(TAG, "onStartCommand: wechatInfo = " + mContact); + mContact = (ContactInfo) intent.getSerializableExtra("ContactInfo"); + Log.e(TAG, "onStartCommand: contactInfo = " + mContact); if (mContact != null) { mName = mContact.getName(); mCallType = mContact.getOperation(); @@ -129,7 +130,6 @@ public class SelectToSpeakService extends AccessibilityService { } else { Toaster.showLong("没有获取到联系人数据"); } - } return super.onStartCommand(intent, flags, startId); } @@ -301,18 +301,23 @@ public class SelectToSpeakService extends AccessibilityService { * 打开微信 */ private void launchWeChat() { - Intent intent = new Intent(); - ComponentName cmp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"); - intent.setAction(Intent.ACTION_MAIN); - intent.addCategory(Intent.CATEGORY_LAUNCHER); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); - intent.setComponent(cmp); - try { - startActivity(intent); - } catch (Exception e) { - Log.e(TAG, "launchWeChat: " + e.getMessage()); + if (ApkUtils.isInstalled(SelectToSpeakService.this, "com.tencent.mm")) { + Intent intent = new Intent(); + ComponentName cmp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"); + intent.setAction(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + intent.setComponent(cmp); + try { + startActivity(intent); + Toaster.show("打开微信失败,请检查微信版本是否过低"); + } catch (Exception e) { + Log.e(TAG, "launchWeChat: " + e.getMessage()); + } + } else { + Toaster.show("微信未安装,请安装微信后使用"); } } diff --git a/app/src/main/java/com/ttstd/elderlyassistant/activity/main/MainActivity.java b/app/src/main/java/com/ttstd/elderlyassistant/activity/main/MainActivity.java index 0a4ad26..244945d 100644 --- a/app/src/main/java/com/ttstd/elderlyassistant/activity/main/MainActivity.java +++ b/app/src/main/java/com/ttstd/elderlyassistant/activity/main/MainActivity.java @@ -135,7 +135,7 @@ public class MainActivity extends AppCompatActivity { try { ContactInfo contact = gson.fromJson(textRecord, type); Intent accessibilityIntent = new Intent(MainActivity.this, SelectToSpeakService.class); - accessibilityIntent.putExtra("WechatInfo", contact); + accessibilityIntent.putExtra("ContactInfo", contact); startService(accessibilityIntent); } catch (Exception e) { Log.e(TAG, "resolveIntent: " + e.getMessage()); diff --git a/app/src/main/java/com/ttstd/elderlyassistant/activity/scheme/SchemeActivity.java b/app/src/main/java/com/ttstd/elderlyassistant/activity/scheme/SchemeActivity.java index 5f61171..ad0ea8e 100644 --- a/app/src/main/java/com/ttstd/elderlyassistant/activity/scheme/SchemeActivity.java +++ b/app/src/main/java/com/ttstd/elderlyassistant/activity/scheme/SchemeActivity.java @@ -139,7 +139,7 @@ public class SchemeActivity extends AppCompatActivity { case 3: case 4: Intent accessibilityIntent = new Intent(SchemeActivity.this, SelectToSpeakService.class); - accessibilityIntent.putExtra("WechatInfo", contactInfo); + accessibilityIntent.putExtra("ContactInfo", contactInfo); startService(accessibilityIntent); break; case 5: diff --git a/app/src/main/java/com/ttstd/elderlyassistant/utils/ApkUtils.java b/app/src/main/java/com/ttstd/elderlyassistant/utils/ApkUtils.java new file mode 100644 index 0000000..b17bb97 --- /dev/null +++ b/app/src/main/java/com/ttstd/elderlyassistant/utils/ApkUtils.java @@ -0,0 +1,23 @@ +package com.ttstd.elderlyassistant.utils; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.text.TextUtils; + +public class ApkUtils { + + public static boolean isInstalled(Context context, String packageName) { + if (TextUtils.isEmpty(packageName)) return false; + PackageManager packageManager = context.getPackageManager(); + try { + PackageInfo packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); + return packageInfo != null; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + return false; + } + + +} diff --git a/app/src/main/res/layout/activity_write_message.xml b/app/src/main/res/layout/activity_write_message.xml index 3a31366..eeadfb2 100644 --- a/app/src/main/res/layout/activity_write_message.xml +++ b/app/src/main/res/layout/activity_write_message.xml @@ -196,9 +196,10 @@ android:layout_width="match_parent" android:layout_height="40dp" android:checked="@{contactInfo.operation==5}" + android:enabled="false" android:maxLines="1" android:singleLine="true" - android:text="拨打QQ电话" /> + android:text="拨打QQ电话(即将开放)" /> + android:text="拨打QQ视频(即将开放)" />