From c63a5c46fd02bd412674502cce59aaee4f04cbde Mon Sep 17 00:00:00 2001
From: lxm <1274844347@qq.com>
Date: Tue, 16 Dec 2025 20:16:52 +0800
Subject: [PATCH] =?UTF-8?q?refactor(permissions):=20=E5=BA=94=E5=B9=BF?=
=?UTF-8?q?=E5=A4=A7=E5=B9=B3=E5=8F=B0=E7=9A=84=E8=A6=81=E6=B1=82=EF=BC=8C?=
=?UTF-8?q?=E7=A7=BB=E9=99=A4=E7=9F=AD=E4=BF=A1=E6=9D=83=E9=99=90=E7=9B=B8?=
=?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
移除不再需要的短信权限请求和相关处理逻辑,改为使用Intent系统短信应用发送短信
---
lib/data/services/novice_guide_service.dart | 7 ----
.../controllers/permissions_controller.dart | 1 -
.../permissions/models/permission_group.dart | 2 +-
.../chat_api/SystemFunctionHandler.kt | 38 +++++++------------
.../android/AndroidManifest.xml | 4 +-
.../open_ai_service/SystemFunctionHandler.kt | 27 ++++++-------
6 files changed, 29 insertions(+), 50 deletions(-)
diff --git a/lib/data/services/novice_guide_service.dart b/lib/data/services/novice_guide_service.dart
index 7fbcefecf..10e9195a2 100644
--- a/lib/data/services/novice_guide_service.dart
+++ b/lib/data/services/novice_guide_service.dart
@@ -109,13 +109,6 @@ class NoviceGuideService extends GetxService {
'endKey': 'guideSmsEnd',
'method': () async {
if (Platform.isAndroid) {
- // 发送短信需要短信权限
- await PermissionUtil.instance.requestPermission(
- permissionType: Permission.sms,
- permissionName: 'sms'.tr, // 短信
- explanationText: 'smsPermissionDesc'.tr, // 用于发送短信功能
- permanentDenialText: 'smsPermissionDetailDesc'.tr, // 发送短信功能需要短信权限
- );
//发送短信还需要联系人权限
await PermissionUtil.instance.requestPermission(
permissionType: Permission.contacts,
diff --git a/lib/modules/permissions/controllers/permissions_controller.dart b/lib/modules/permissions/controllers/permissions_controller.dart
index fb69e9b1d..1b184a4e4 100644
--- a/lib/modules/permissions/controllers/permissions_controller.dart
+++ b/lib/modules/permissions/controllers/permissions_controller.dart
@@ -145,7 +145,6 @@ class PermissionsController extends GetxController {
Permission.calendarFullAccess,
Permission.location,
Permission.phone,
- Permission.sms,
Permission.contacts,
...bluetoothPermissions,
Permission.notification,
diff --git a/lib/modules/permissions/models/permission_group.dart b/lib/modules/permissions/models/permission_group.dart
index 30fddf8a5..7b7990dbe 100644
--- a/lib/modules/permissions/models/permission_group.dart
+++ b/lib/modules/permissions/models/permission_group.dart
@@ -49,7 +49,7 @@ class PermissionGroup {
const PermissionGroupModel(
titleKey: 'communicationPermissions',
icon: Icons.phone_android,
- permissions: [Permission.phone, Permission.sms, Permission.contacts],
+ permissions: [Permission.phone, Permission.contacts],
),
// 蓝牙权限组 - 根据平台动态获取权限
PermissionGroupModel(
diff --git a/local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/SystemFunctionHandler.kt b/local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/SystemFunctionHandler.kt
index 94173554d..bb16bc993 100644
--- a/local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/SystemFunctionHandler.kt
+++ b/local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/SystemFunctionHandler.kt
@@ -10,12 +10,10 @@ import android.content.pm.PackageManager
import android.location.LocationManager
import android.media.AudioManager
import android.net.Uri
-import android.os.Build
import android.provider.AlarmClock
import android.provider.CalendarContract
import android.provider.ContactsContract
import android.provider.Settings
-import android.telephony.SmsManager
import android.util.Log
import androidx.core.content.ContextCompat
import com.yunqiinnovation.location_service.LocationService
@@ -519,16 +517,6 @@ private class SendTextMessageHandler(private val context: Context?) : FunctionHa
val handler = context.let { SystemFunctionHandler(it) }
return try {
- // 检查发送短信权限
- if (!handler.checkPermissionAndGuide(Manifest.permission.SEND_SMS, "发送短信", "发送短信")) {
- return JSONObject().apply {
- put("error", JSONObject().apply {
- put("code", "permission_denied")
- put("message", "需要短信权限才能发送短信,请在权限管理中开启短信权限")
- })
- }.toString()
- }
-
val phoneNumber = handler.getPhoneNumberForContact(phone_number)
if (phoneNumber.isEmpty()) {
return JSONObject().apply {
@@ -539,24 +527,24 @@ private class SendTextMessageHandler(private val context: Context?) : FunctionHa
}.toString()
}
- // 使用SmsManager发送短信
- val smsManager = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
- context.getSystemService(SmsManager::class.java)
- } else {
- @Suppress("DEPRECATION")
- SmsManager.getDefault()
+ val intent = Intent(Intent.ACTION_SENDTO).apply {
+ data = Uri.parse("smsto:$phoneNumber")
+ putExtra("sms_body", message)
+ flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
-
- // 处理长短信
- val parts = smsManager.divideMessage(message)
- if (parts.size == 1) {
- smsManager.sendTextMessage(phoneNumber, null, message, null, null)
+ if (context.packageManager?.queryIntentActivities(intent, 0)?.isNotEmpty() == true) {
+ context.startActivity(intent)
} else {
- smsManager.sendMultipartTextMessage(phoneNumber, null, parts, null, null)
+ return JSONObject().apply {
+ put("error", JSONObject().apply {
+ put("code", "no_sms_app")
+ put("message", "未找到可用的短信应用")
+ })
+ }.toString()
}
JSONObject().apply {
- put("result", "已成功向${phone_number}发送短信")
+ put("result", "已打开短信应用,请确认发送")
put("phone", phoneNumber)
put("message", message)
}.toString()
diff --git a/local_plugins/open_ai_service/android/AndroidManifest.xml b/local_plugins/open_ai_service/android/AndroidManifest.xml
index 1d834e578..2b2696537 100644
--- a/local_plugins/open_ai_service/android/AndroidManifest.xml
+++ b/local_plugins/open_ai_service/android/AndroidManifest.xml
@@ -4,9 +4,7 @@
-
-
-
\ No newline at end of file
+
diff --git a/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/SystemFunctionHandler.kt b/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/SystemFunctionHandler.kt
index 3117bffa6..845b60d23 100644
--- a/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/SystemFunctionHandler.kt
+++ b/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/SystemFunctionHandler.kt
@@ -13,7 +13,6 @@ import android.provider.AlarmClock
import android.provider.CalendarContract
import android.provider.MediaStore
import android.provider.Settings
-import android.telephony.SmsManager
import android.util.Log
import org.json.JSONObject
import kotlinx.coroutines.suspendCancellableCoroutine
@@ -761,29 +760,31 @@ class SystemFunctionHandler(private val context: Context) {
Log.d(TAG, "发送短信给 $contact: $message")
try {
- // 检查发送短信权限
- if (!checkPermissionAndGuide(Manifest.permission.SEND_SMS, "发送短信", "发送短信")) {
+ val phoneNumber = getPhoneNumberForContact(contact)
+ if (phoneNumber.isEmpty()) {
return Result(
success = false,
- message = "需要短信权限才能发送短信,请在权限管理中开启短信权限"
+ message = "未找到联系人信息: $contact"
)
}
- val phoneNumber = getPhoneNumberForContact(contact)
- if (phoneNumber.isEmpty()) {
+ val intent = Intent(Intent.ACTION_SENDTO).apply {
+ data = Uri.parse("smsto:$phoneNumber")
+ putExtra("sms_body", message)
+ flags = Intent.FLAG_ACTIVITY_NEW_TASK
+ }
+ if (intent.resolveActivity(context.packageManager) != null) {
+ context.startActivity(intent)
+ } else {
return Result(
success = false,
- message = "未找到联系人信息: $contact"
+ message = "未找到可用的短信应用"
)
}
- // 使用SmsManager发送短信
- val smsManager = SmsManager.getDefault()
- smsManager.sendTextMessage(phoneNumber, null, message, null, null)
-
return Result(
success = true,
- message = "已向${contact}发送短信: $message"
+ message = "已打开短信应用,请确认发送"
)
} catch (e: Exception) {
Log.e(TAG, "发送短信失败: ${e.message}", e)
@@ -1350,4 +1351,4 @@ class SystemFunctionHandler(private val context: Context) {
val success: Boolean,
val message: String
)
-}
\ No newline at end of file
+}