feat: 添加通知设置功能,支持用户开启/关闭通知捕获,优化设置页功能显示,升级kotlin构建版本
This commit is contained in:
@@ -18,7 +18,7 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD>ʽͳһ Java / Kotlin <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Capacitor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD>Java 21<EFBFBD><EFBFBD>
|
||||
// 显式统一 Java / Kotlin 的编译目标版本,保持与 Capacitor 生成配置一致(Java 21)
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_21
|
||||
targetCompatibility JavaVersion.VERSION_21
|
||||
@@ -52,4 +52,5 @@ dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
}
|
||||
|
||||
apply from: 'capacitor.build.gradle'
|
||||
apply from: 'capacitor.build.gradle'
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.echo.app.notification
|
||||
package com.echo.app.notification
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.provider.Settings
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import com.getcapacitor.JSArray
|
||||
import com.getcapacitor.JSObject
|
||||
@@ -12,7 +13,7 @@ import com.getcapacitor.PluginCall
|
||||
import com.getcapacitor.PluginMethod
|
||||
import com.getcapacitor.annotation.CapacitorPlugin
|
||||
|
||||
// Capacitor <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>˱<EFBFBD>¶֪ͨȨ<EFBFBD><EFBFBD><EFBFBD>顢<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
// Capacitor 插件:向前端暴露通知权限、通知队列以及通知事件
|
||||
@CapacitorPlugin(name = "NotificationBridge")
|
||||
class NotificationBridgePlugin : Plugin() {
|
||||
|
||||
@@ -21,7 +22,7 @@ class NotificationBridgePlugin : Plugin() {
|
||||
override fun load() {
|
||||
super.load()
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NotificationBridgeService <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ڹ㲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ JS <EFBFBD>¼<EFBFBD>
|
||||
// 监听 NotificationBridgeService 发送的应用内广播,并转发为 JS 事件
|
||||
val filter = IntentFilter("com.echo.app.NOTIFICATION_POSTED")
|
||||
notificationPostedReceiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
@@ -52,10 +53,19 @@ class NotificationBridgePlugin : Plugin() {
|
||||
|
||||
@PluginMethod
|
||||
fun requestPermission(call: PluginCall) {
|
||||
// <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 当前仅返回权限状态,实际的引导文案和跳转由前端控制
|
||||
hasPermission(call)
|
||||
}
|
||||
|
||||
@PluginMethod
|
||||
fun openNotificationSettings(call: PluginCall) {
|
||||
// 跳转到系统的“通知使用权”设置页面,引导用户手动开启监听权限
|
||||
val intent = Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(intent)
|
||||
call.resolve()
|
||||
}
|
||||
|
||||
@PluginMethod
|
||||
fun getPendingNotifications(call: PluginCall) {
|
||||
val queue = NotificationStorage.list(context)
|
||||
@@ -80,4 +90,4 @@ class NotificationBridgePlugin : Plugin() {
|
||||
NotificationStorage.clear(context)
|
||||
call.resolve()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
<resources>
|
||||
<!-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD> Capacitor Ĭ<><C4AC><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> -->
|
||||
<resources>
|
||||
<!-- 应用主主题:为 Capacitor WebView 启用沉浸式状态栏和导航栏 -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<!-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Activity ר<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣨Ŀǰ<EFBFBD><EFBFBD> AppTheme һ<>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3> -->
|
||||
<!-- 启动 Activity 专用主题(当前与 AppTheme 一致,后续可单独定制) -->
|
||||
<style name="AppTheme.NoActionBarLaunch" parent="AppTheme" />
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user