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. 4
      local_plugins/open_ai_service/android/AndroidManifest.xml
  6. 27
      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', 'endKey': 'guideSmsEnd',
'method': () async { 'method': () async {
if (Platform.isAndroid) { if (Platform.isAndroid) {
// 发送短信需要短信权限
await PermissionUtil.instance.requestPermission(
permissionType: Permission.sms,
permissionName: 'sms'.tr, // 短信
explanationText: 'smsPermissionDesc'.tr, // 用于发送短信功能
permanentDenialText: 'smsPermissionDetailDesc'.tr, // 发送短信功能需要短信权限
);
//发送短信还需要联系人权限 //发送短信还需要联系人权限
await PermissionUtil.instance.requestPermission( await PermissionUtil.instance.requestPermission(
permissionType: Permission.contacts, permissionType: Permission.contacts,

1
lib/modules/permissions/controllers/permissions_controller.dart

@ -145,7 +145,6 @@ class PermissionsController extends GetxController {
Permission.calendarFullAccess, Permission.calendarFullAccess,
Permission.location, Permission.location,
Permission.phone, Permission.phone,
Permission.sms,
Permission.contacts, Permission.contacts,
...bluetoothPermissions, ...bluetoothPermissions,
Permission.notification, Permission.notification,

2
lib/modules/permissions/models/permission_group.dart

@ -49,7 +49,7 @@ class PermissionGroup {
const PermissionGroupModel( const PermissionGroupModel(
titleKey: 'communicationPermissions', titleKey: 'communicationPermissions',
icon: Icons.phone_android, icon: Icons.phone_android,
permissions: [Permission.phone, Permission.sms, Permission.contacts], permissions: [Permission.phone, Permission.contacts],
), ),
// 蓝牙权限组 - 根据平台动态获取权限 // 蓝牙权限组 - 根据平台动态获取权限
PermissionGroupModel( 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.location.LocationManager
import android.media.AudioManager import android.media.AudioManager
import android.net.Uri import android.net.Uri
import android.os.Build
import android.provider.AlarmClock import android.provider.AlarmClock
import android.provider.CalendarContract import android.provider.CalendarContract
import android.provider.ContactsContract import android.provider.ContactsContract
import android.provider.Settings import android.provider.Settings
import android.telephony.SmsManager
import android.util.Log import android.util.Log
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.yunqiinnovation.location_service.LocationService import com.yunqiinnovation.location_service.LocationService
@ -519,16 +517,6 @@ private class SendTextMessageHandler(private val context: Context?) : FunctionHa
val handler = context.let { SystemFunctionHandler(it) } val handler = context.let { SystemFunctionHandler(it) }
return try { 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) val phoneNumber = handler.getPhoneNumberForContact(phone_number)
if (phoneNumber.isEmpty()) { if (phoneNumber.isEmpty()) {
return JSONObject().apply { return JSONObject().apply {
@ -539,24 +527,24 @@ private class SendTextMessageHandler(private val context: Context?) : FunctionHa
}.toString() }.toString()
} }
// 使用SmsManager发送短信 val intent = Intent(Intent.ACTION_SENDTO).apply {
val smsManager = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { data = Uri.parse("smsto:$phoneNumber")
context.getSystemService(SmsManager::class.java) putExtra("sms_body", message)
} else { flags = Intent.FLAG_ACTIVITY_NEW_TASK
@Suppress("DEPRECATION")
SmsManager.getDefault()
} }
if (context.packageManager?.queryIntentActivities(intent, 0)?.isNotEmpty() == true) {
// 处理长短信 context.startActivity(intent)
val parts = smsManager.divideMessage(message)
if (parts.size == 1) {
smsManager.sendTextMessage(phoneNumber, null, message, null, null)
} else { } 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 { JSONObject().apply {
put("result", "已成功向${phone_number}发送短信") put("result", "已打开短信应用,请确认发送")
put("phone", phoneNumber) put("phone", phoneNumber)
put("message", message) put("message", message)
}.toString() }.toString()

4
local_plugins/open_ai_service/android/AndroidManifest.xml

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

27
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.CalendarContract
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.Settings import android.provider.Settings
import android.telephony.SmsManager
import android.util.Log import android.util.Log
import org.json.JSONObject import org.json.JSONObject
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine
@ -761,29 +760,31 @@ class SystemFunctionHandler(private val context: Context) {
Log.d(TAG, "发送短信给 $contact: $message") Log.d(TAG, "发送短信给 $contact: $message")
try { try {
// 检查发送短信权限 val phoneNumber = getPhoneNumberForContact(contact)
if (!checkPermissionAndGuide(Manifest.permission.SEND_SMS, "发送短信", "发送短信")) { if (phoneNumber.isEmpty()) {
return Result( return Result(
success = false, success = false,
message = "需要短信权限才能发送短信,请在权限管理中开启短信权限" message = "未找到联系人信息: $contact"
) )
} }
val phoneNumber = getPhoneNumberForContact(contact) val intent = Intent(Intent.ACTION_SENDTO).apply {
if (phoneNumber.isEmpty()) { 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( return Result(
success = false, success = false,
message = "未找到联系人信息: $contact" message = "未找到可用的短信应用"
) )
} }
// 使用SmsManager发送短信
val smsManager = SmsManager.getDefault()
smsManager.sendTextMessage(phoneNumber, null, message, null, null)
return Result( return Result(
success = true, success = true,
message = "已向${contact}发送短信: $message" message = "已打开短信应用,请确认发送"
) )
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "发送短信失败: ${e.message}", e) Log.e(TAG, "发送短信失败: ${e.message}", e)
@ -1350,4 +1351,4 @@ class SystemFunctionHandler(private val context: Context) {
val success: Boolean, val success: Boolean,
val message: String val message: String
) )
} }

Loading…
Cancel
Save