diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt index 456789f2..4fd2b6bb 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt @@ -41,7 +41,7 @@ data class MsgInfo( val versionName = AppUtils.getAppVersionName() val splitSimInfo = simInfo.split("#####") val title = splitSimInfo.getOrElse(0) { simInfo } - val schema = splitSimInfo.getOrElse(1) { "" } + val scheme = splitSimInfo.getOrElse(1) { "" } val titleForSend: String = template.replace(getString(R.string.tag_from), from) .replace(getString(R.string.tag_package_name), from) .replace(getString(R.string.tag_sms), content) @@ -49,7 +49,7 @@ data class MsgInfo( .replace(getString(R.string.tag_card_slot), title) .replace(getString(R.string.tag_card_subid), subId.toString()) .replace(getString(R.string.tag_title), title) - .replace(getString(R.string.tag_schema), schema) + .replace(getString(R.string.tag_scheme), scheme) .replace(getString(R.string.tag_receive_time), SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)) .replace(getString(R.string.tag_device_name), deviceMark) .replace(getString(R.string.tag_app_version), versionName) @@ -87,7 +87,7 @@ data class MsgInfo( val versionName = AppUtils.getAppVersionName() val splitSimInfo = simInfo.split("#####") val title = splitSimInfo.getOrElse(0) { simInfo } - val schema = splitSimInfo.getOrElse(1) { "" } + val scheme = splitSimInfo.getOrElse(1) { "" } val smsVoForSend: String = customSmsTemplate.replace(getString(R.string.tag_from), from) .replace(getString(R.string.tag_package_name), from) .replace(getString(R.string.tag_sms), content) @@ -95,7 +95,7 @@ data class MsgInfo( .replace(getString(R.string.tag_card_slot), title) .replace(getString(R.string.tag_card_subid), subId.toString()) .replace(getString(R.string.tag_title), title) - .replace(getString(R.string.tag_schema), schema) + .replace(getString(R.string.tag_scheme), scheme) .replace(getString(R.string.tag_receive_time), SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)) .replace(getString(R.string.tag_device_name), deviceMark) .replace(getString(R.string.tag_app_version), versionName) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt index 41c10b41..c37d6d36 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt @@ -109,10 +109,10 @@ class LogsFragment : BaseFragment(), MsgPagingAdapter.OnIt if (item.msg.type == "app") { val splitSimInfo = item.msg.simInfo.split("#####") val title = splitSimInfo.getOrElse(0) { item.msg.simInfo } - val schema = splitSimInfo.getOrElse(1) { "" } + val scheme = splitSimInfo.getOrElse(1) { "" } detailStr.append(ResUtils.getString(R.string.title)).append(title).append("\n\n") detailStr.append(ResUtils.getString(R.string.msg)).append(item.msg.content).append("\n\n") - if (!TextUtils.isEmpty(schema) && schema != "null") detailStr.append(ResUtils.getString(R.string.schema)).append(schema).append("\n\n") + if (!TextUtils.isEmpty(scheme) && scheme != "null") detailStr.append(ResUtils.getString(R.string.scheme)).append(scheme).append("\n\n") } else { detailStr.append(ResUtils.getString(R.string.msg)).append(item.msg.content).append("\n\n") detailStr.append(ResUtils.getString(R.string.slot)).append(item.msg.simInfo).append("\n\n") diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.kt b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.kt index ae10fedf..5b4c7c3a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.kt @@ -1,6 +1,8 @@ package com.idormy.sms.forwarder.service +import android.annotation.SuppressLint import android.content.ComponentName +import android.net.Uri import android.os.Build import android.service.notification.NotificationListenerService import android.service.notification.StatusBarNotification @@ -43,14 +45,15 @@ class NotifyService : NotificationListenerService() { } } + @SuppressLint("DiscouragedPrivateApi") override fun onNotificationPosted(sbn: StatusBarNotification?) { try { //纯客户端模式 if (SettingUtils.enablePureClientMode) return //异常通知跳过 - if (sbn!!.notification == null) return - if (sbn.notification.extras == null) return + val notification = sbn?.notification ?: return + val extras = notification.extras ?: return //自动消除额外APP通知 if (!TextUtils.isEmpty(SettingUtils.cancelExtraAppNotify)) { @@ -76,25 +79,48 @@ class NotifyService : NotificationListenerService() { val from = sbn.packageName //自身通知跳过 if (PACKAGE_NAME == sbn.packageName) return - //通知标题 var title = "" - if (sbn.notification.extras["android.title"] != null) { - title = sbn.notification.extras["android.title"].toString() + if (extras["android.title"] != null) { + title = extras["android.title"].toString() } //通知内容 var text = "" - if (sbn.notification.extras["android.text"] != null) { - text = sbn.notification.extras["android.text"].toString() + if (extras["android.text"] != null) { + text = extras["android.text"].toString() } - if (text.isEmpty() && sbn.notification.tickerText != null) { - text = sbn.notification.tickerText.toString() + if (text.isEmpty() && notification.tickerText != null) { + text = notification.tickerText.toString() } - //通知Schema - val schema = sbn.notification.extras["android.template"].toString()//.substringBefore('/') - Log.d(TAG, "schema=$schema") - if (!TextUtils.isEmpty(schema)) { - title += "#####$schema" + // TODO: 获取Scheme信息 + val pendingIntent = notification.contentIntent + /*try { + val method = pendingIntent.javaClass.getDeclaredMethod("getIntent") + val intent = method.invoke(pendingIntent) as Intent + // 获取scheme + val scheme = intent.scheme + if (scheme != null) { + // 处理scheme信息 + Log.d(TAG, "Scheme: $scheme") + } + } catch (e: Exception) { + // 处理异常 + Log.e(TAG, "Failed to get scheme from PendingIntent", e) + }*/ + try { + val creatorPackage = pendingIntent.creatorPackage + val appIntent = creatorPackage?.let { packageManager.getLaunchIntentForPackage(it) } + var scheme: String? = appIntent?.scheme + if (scheme == null) { + val uri: Uri? = appIntent?.data + scheme = uri?.scheme + } + Log.d(TAG, "from=$from, scheme=$scheme") + if (!TextUtils.isEmpty(scheme)) { + title += "#####$scheme" + } + } catch (e: Exception) { + e.printStackTrace() } //不处理空消息(标题跟内容都为空) diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 48f15266..67bf25b6 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -572,7 +572,7 @@ Rematch From: Title: - Schema: + Scheme: Msg: Slot: Rule: @@ -592,7 +592,7 @@ {{DEVICE_NAME}} {{APP_VERSION}} {{TITLE}} - {{SCHEMA}} + {{SCHEME}} SMS CALL APP diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c3fe63e0..b7981e19 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -573,7 +573,7 @@ 重新匹配规则 来源: 标题: - Schema: + Scheme: 消息: 卡槽: 规则: @@ -593,7 +593,7 @@ {{设备名称}} {{当前应用版本号}} {{通知标题}} - {{通知Schema}} + {{通知Scheme}} 短信 来电 应用