Browse Source

refactor(permissions): 应广大平台的要求,移除短信权限相关代码

移除不再需要的短信权限请求和相关处理逻辑,改为使用Intent系统短信应用发送短信
newdev_shunjiawei
lxm 10 months ago
parent
commit
e82cc2195e
  1. 7
      lib/data/services/novice_guide_service.dart
  2. 1
      lib/modules/permissions/controllers/permissions_controller.dart
  3. 2
      lib/modules/permissions/models/permission_group.dart
  4. 38
      local_plugins/chat_api/android/src/main/kotlin/com/yunqiinnovation/chat_api/SystemFunctionHandler.kt
  5. 2
      local_plugins/open_ai_service/android/AndroidManifest.xml
  6. 25
      local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/SystemFunctionHandler.kt

7
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,

1
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,

2
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(

38
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()

2
local_plugins/open_ai_service/android/AndroidManifest.xml

@ -4,8 +4,6 @@
<!-- 拨打电话权限 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- 发送短信权限 -->
<uses-permission android:name="android.permission.SEND_SMS" />
<!-- 读取联系人权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />

25
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)

Loading…
Cancel
Save