diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt index cce6da0..8b927f2 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt @@ -6,10 +6,7 @@ import android.view.View import android.view.ViewGroup import android.widget.LinearLayout import androidx.core.graphics.toColorInt -import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible -import androidx.core.view.updatePadding import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import com.ama.core.architecture.appBase.AppViewsFragment @@ -165,7 +162,7 @@ class TasksFragment : AppViewsFragment(), OnTab llTaskGame.postDelayed({ ivAdIndi.isVisible = false showGuide1() - }, 5) + }, 1) } updateDailySignButUI() diff --git a/notification/src/main/java/com/remax/notification/builder/NotificationDataFactory.kt b/notification/src/main/java/com/remax/notification/builder/NotificationDataFactory.kt index c4a5c2f..67bbdd9 100644 --- a/notification/src/main/java/com/remax/notification/builder/NotificationDataFactory.kt +++ b/notification/src/main/java/com/remax/notification/builder/NotificationDataFactory.kt @@ -5,20 +5,16 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.os.Build -import android.os.Environment import android.widget.RemoteViews import com.blankj.utilcode.util.StringUtils import com.example.features.notification.controller.NotificationRemoteViewsBuilder -import com.remax.base.utils.FileScanner import com.remax.notification.R import com.remax.notification.check.NotificationCheckController import com.remax.notification.config.PushContent -import com.remax.notification.config.PushContentController import com.remax.notification.newUtil.NotificationDatas import com.remax.notification.service.NotificationKeepAliveServiceManager -import java.io.File import java.time.LocalDate -import kotlin.random.Random + enum class NotificationType { @@ -106,52 +102,7 @@ fun entryPointIntent(context: Context): Intent = putExtra("notification_timestamp", System.currentTimeMillis()) } -/** - * 重置红点显示状态(用于测试或特殊情况) - * @param context 上下文 - */ -fun resetRedPointStatus(context: Context) { - try { - val sharedPreferences = - context.getSharedPreferences("notification_red_point", Context.MODE_PRIVATE) - sharedPreferences.edit() - .remove("has_clicked_today") - .remove("last_click_date") - .apply() - } catch (e: Exception) { - // 忽略异常 - } -} -/** - * 检查是否应该显示红点(点击后才隐藏) - * @param context 上下文 - * @return true 如果应该显示红点,false 如果不应该显示 - */ -private fun shouldShowRedPoint(context: Context): Boolean { - return try { - val sharedPreferences = - context.getSharedPreferences("notification_red_point", Context.MODE_PRIVATE) - val hasClickedToday = sharedPreferences.getBoolean("has_clicked_today", false) - val lastClickDate = sharedPreferences.getString("last_click_date", "") - val today = LocalDate.now().toString() - - // 如果是新的一天,重置点击状态 - if (lastClickDate != today) { - sharedPreferences.edit() - .putBoolean("has_clicked_today", false) - .putString("last_click_date", today) - .apply() - return true // 新的一天显示红点 - } - - // 如果今天还没点击过,显示红点 - !hasClickedToday - } catch (e: Exception) { - // 异常情况下默认显示红点 - true - } -} /** * 标记红点已点击(隐藏红点) @@ -173,195 +124,7 @@ fun markRedPointClicked(context: Context) { } } -/** - * 计算恢复文件数量 - * @param context 上下文 - * @return 文件数量,如果出错则返回 0 - */ -private fun getRecoveredFileCount(context: Context): Int { - return try { - val externalStorage = Environment.getExternalStorageDirectory() - val copyDir = File(externalStorage, FileScanner.COPY_DIR) - if (!copyDir.exists() || !copyDir.isDirectory) { - return 0 - } - - var fileCount = 0 - copyDir.listFiles()?.forEach { subDir -> - if (subDir.isDirectory) { - subDir.listFiles()?.let { files -> - fileCount += files.size - } - } - } - fileCount - } catch (e: Exception) { - // 忽略无权限等异常情况 - 0 - } -} - -class GeneralModelManager() { - - fun getModel(context: Context,type:NotificationCheckController.NotificationType): GeneralNotificationData { - val notificationId = type2notificationId[NotificationType.GENERAL] ?: 0 - val data = PushContentController.getNextPushContent()!! - val title = data.title - val content = data.desc - val pendingIntent = entryPointPendingIntent(context, notificationId) { - it.putExtra(LANDING_NOTIFICATION_ACTION, data.actionType) - it.putExtra(LANDING_NOTIFICATION_FROM, type.string) - it.putExtra(LANDING_NOTIFICATION_TITLE, title) - it.putExtra(LANDING_NOTIFICATION_CONTENT, content) - } - - val badgeCount = Random.nextInt(1, 100).toString() - val contentView = NotificationRemoteViewsBuilder( - context.packageName, - R.layout.layout_notification_general_12, - R.layout.layout_notification_general - ) - .setImageViewResource( - R.id.iv, when (data.iconType) { - PushContent.ICON_TYPE_PHOTO -> R.drawable.ic_noti_photo - PushContent.ICON_TYPE_VIDEO -> R.drawable.ic_noti_video - PushContent.ICON_TYPE_DOCUMENT -> R.drawable.ic_noti_document - PushContent.ICON_TYPE_AUDIO -> R.drawable.ic_noti_audio - PushContent.ICON_TYPE_SCREENSHOT -> R.drawable.ic_noti_shot - PushContent.ICON_TYPE_RECOVERED -> R.drawable.ic_noti_recover - else -> R.drawable.ic_noti_photo - } - ) - .setTextViewText(R.id.tvCount, badgeCount) - .setTextViewText(R.id.tvTitle, title) - .setTextViewText(R.id.tvDesc, content) - .setTextViewText( - R.id.tvAction, when (data.iconType) { - PushContent.ICON_TYPE_SCREENSHOT -> StringUtils.getString(R.string.noti_clean) - else -> StringUtils.getString(R.string.noti_recovery) - } - ) - .build() - - val bigContentView = NotificationRemoteViewsBuilder( - context.packageName, - R.layout.layout_notification_general_big_12, - R.layout.layout_notification_general_big - ) - .setImageViewResource( - R.id.iv, when (data.iconType) { - PushContent.ICON_TYPE_PHOTO -> R.drawable.ic_noti_photo - PushContent.ICON_TYPE_VIDEO -> R.drawable.ic_noti_video - PushContent.ICON_TYPE_DOCUMENT -> R.drawable.ic_noti_document - PushContent.ICON_TYPE_AUDIO -> R.drawable.ic_noti_audio - PushContent.ICON_TYPE_SCREENSHOT -> R.drawable.ic_noti_shot - PushContent.ICON_TYPE_RECOVERED -> R.drawable.ic_noti_recover - else -> R.drawable.ic_noti_photo - } - ) - .setTextViewText(R.id.tvCount, badgeCount) - .setTextViewText(R.id.tvTitle, title) - .setTextViewText(R.id.tvDesc, content) - .setTextViewText( - R.id.tvAction, when (data.iconType) { - PushContent.ICON_TYPE_SCREENSHOT -> StringUtils.getString(R.string.noti_clean) - else -> StringUtils.getString(R.string.noti_recovery) - } - ) - .build() - - return GeneralNotificationData( - notificationId = notificationId, - contentTitle = title, - contentContent = content, - contentIntent = pendingIntent, - contentView = contentView, - bigContentView = bigContentView - ) - } -} - - -class FixTimeModelManager() { - - fun getModel(context: Context,type:NotificationCheckController.NotificationType): GeneralNotificationData { - val notificationId = type2notificationId[NotificationType.GENERAL] ?: 0 - val data = PushContentController.getNextPushContent()!! - val title = data.title - val content = data.desc - val pendingIntent = entryPointPendingIntent(context, notificationId) { - it.putExtra(LANDING_NOTIFICATION_ACTION, data.actionType) - it.putExtra(LANDING_NOTIFICATION_FROM, type.string) - it.putExtra(LANDING_NOTIFICATION_TITLE, title) - it.putExtra(LANDING_NOTIFICATION_CONTENT, content) - } - - val badgeCount = Random.nextInt(1, 100).toString() - val contentView = NotificationRemoteViewsBuilder( - context.packageName, - R.layout.layout_notification_beauty_12, - R.layout.layout_notification_beauty - ) - .setImageViewResource( - R.id.iv, when (data.iconType) { - PushContent.ICON_TYPE_PHOTO -> R.drawable.ic_noti_photo - PushContent.ICON_TYPE_VIDEO -> R.drawable.ic_noti_video - PushContent.ICON_TYPE_DOCUMENT -> R.drawable.ic_noti_document - PushContent.ICON_TYPE_AUDIO -> R.drawable.ic_noti_audio - PushContent.ICON_TYPE_SCREENSHOT -> R.drawable.ic_noti_shot - PushContent.ICON_TYPE_RECOVERED -> R.drawable.ic_noti_recover - else -> R.drawable.ic_noti_photo - } - ) - .setTextViewText(R.id.tvCount, badgeCount) - .setTextViewText(R.id.tvTitle, title) - .setTextViewText(R.id.tvDesc, content) - .setTextViewText( - R.id.tvAction, when (data.iconType) { - PushContent.ICON_TYPE_SCREENSHOT -> StringUtils.getString(R.string.noti_clean) - else -> StringUtils.getString(R.string.noti_recovery) - } - ) - .build() - - val bigContentView = NotificationRemoteViewsBuilder( - context.packageName, - R.layout.layout_notification_beauty_12, - R.layout.layout_notification_beauty - ) - .setImageViewResource( - R.id.iv, when (data.iconType) { - PushContent.ICON_TYPE_PHOTO -> R.drawable.ic_noti_photo - PushContent.ICON_TYPE_VIDEO -> R.drawable.ic_noti_video - PushContent.ICON_TYPE_DOCUMENT -> R.drawable.ic_noti_document - PushContent.ICON_TYPE_AUDIO -> R.drawable.ic_noti_audio - PushContent.ICON_TYPE_SCREENSHOT -> R.drawable.ic_noti_shot - PushContent.ICON_TYPE_RECOVERED -> R.drawable.ic_noti_recover - else -> R.drawable.ic_noti_photo - } - ) - .setTextViewText(R.id.tvCount, badgeCount) - .setTextViewText(R.id.tvTitle, title) - .setTextViewText(R.id.tvDesc, content) - .setTextViewText( - R.id.tvAction, when (data.iconType) { - PushContent.ICON_TYPE_SCREENSHOT -> StringUtils.getString(R.string.noti_clean) - else -> StringUtils.getString(R.string.noti_recovery) - } - ) - .build() - - return GeneralNotificationData( - notificationId = notificationId, - contentTitle = title, - contentContent = content, - contentIntent = pendingIntent, - contentView = contentView, - bigContentView = bigContentView - ) - } -} class ResidentModelManger { diff --git a/notification/src/main/java/com/remax/notification/controller/NotificationTriggerController.kt b/notification/src/main/java/com/remax/notification/controller/NotificationTriggerController.kt index e3a4680..e6fa3f9 100644 --- a/notification/src/main/java/com/remax/notification/controller/NotificationTriggerController.kt +++ b/notification/src/main/java/com/remax/notification/controller/NotificationTriggerController.kt @@ -15,13 +15,11 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import com.ama.core.architecture.BaseApp import com.ama.core.architecture.util.DateUtil -import com.ama.core.architecture.util.permission.PermissionUtil import com.gamedog.statisticreporter.StatisticUtil import com.remax.base.ext.canSendNotification import com.remax.base.report.DataReportManager import com.remax.notification.NotifyConst import com.remax.notification.R -import com.remax.notification.builder.GeneralModelManager import com.remax.notification.builder.GeneralNotificationData import com.remax.notification.builder.NotificationType import com.remax.notification.builder.ResidentModelManger @@ -29,7 +27,6 @@ import com.remax.notification.builder.type2notificationId import com.remax.notification.check.NotificationCheckController import com.remax.notification.config.NotificationConfigController import com.remax.notification.newUtil.NotificationRecorder -import com.remax.notification.newUtil.NotificationUtil import com.remax.notification.receiver.NotificationDeleteReceiver import com.remax.notification.service.NotificationKeepAliveService import com.remax.notification.timing.NotificationTimingController @@ -331,22 +328,6 @@ object NotificationTriggerController { } } - fun triggerGeneralNotification( - type: NotificationCheckController.NotificationType, onNotificationSent: (() -> Unit)? = null - ) { - if (context?.canSendNotification() == true) { - triggerNotification( - notificationType = "常规通知", - modelBuilder = { context -> GeneralModelManager().getModel(context, type) }, - notificationBuilder = { data -> general(data) }, - onNotificationSent = { notificationData, notification -> - onNotificationSent?.invoke() - generalTrack(type, notificationData) - // 检查是否需要重复通知 - checkAndStartRepeatNotification(notificationData, notification, type) - }) - } - } fun triggerFixTimeNotification() { checkAndStartFixTimeNotification() diff --git a/notification/src/main/res/drawable/ic_noti_audio.xml b/notification/src/main/res/drawable/ic_noti_audio.xml deleted file mode 100644 index 208e118..0000000 --- a/notification/src/main/res/drawable/ic_noti_audio.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - diff --git a/notification/src/main/res/drawable/ic_noti_document.xml b/notification/src/main/res/drawable/ic_noti_document.xml deleted file mode 100644 index 45f121a..0000000 --- a/notification/src/main/res/drawable/ic_noti_document.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - diff --git a/notification/src/main/res/drawable/ic_noti_photo.xml b/notification/src/main/res/drawable/ic_noti_photo.xml deleted file mode 100644 index a96b0ae..0000000 --- a/notification/src/main/res/drawable/ic_noti_photo.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/drawable/ic_noti_recover.xml b/notification/src/main/res/drawable/ic_noti_recover.xml deleted file mode 100644 index 99cf0c1..0000000 --- a/notification/src/main/res/drawable/ic_noti_recover.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/drawable/ic_noti_shot.xml b/notification/src/main/res/drawable/ic_noti_shot.xml deleted file mode 100644 index 53f20f3..0000000 --- a/notification/src/main/res/drawable/ic_noti_shot.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/drawable/ic_noti_video.xml b/notification/src/main/res/drawable/ic_noti_video.xml deleted file mode 100644 index 1414353..0000000 --- a/notification/src/main/res/drawable/ic_noti_video.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/drawable/ic_resident_restore.xml b/notification/src/main/res/drawable/ic_resident_restore.xml deleted file mode 100644 index 74dad9d..0000000 --- a/notification/src/main/res/drawable/ic_resident_restore.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/notification/src/main/res/drawable/ic_resident_restored.xml b/notification/src/main/res/drawable/ic_resident_restored.xml deleted file mode 100644 index 7b9c050..0000000 --- a/notification/src/main/res/drawable/ic_resident_restored.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/notification/src/main/res/drawable/ic_resident_tip.xml b/notification/src/main/res/drawable/ic_resident_tip.xml deleted file mode 100644 index b0beb0f..0000000 --- a/notification/src/main/res/drawable/ic_resident_tip.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/notification/src/main/res/layout/layout_notification_general.xml b/notification/src/main/res/layout/layout_notification_general.xml deleted file mode 100644 index dc908cd..0000000 --- a/notification/src/main/res/layout/layout_notification_general.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/layout/layout_notification_general_12.xml b/notification/src/main/res/layout/layout_notification_general_12.xml deleted file mode 100644 index 3527ba2..0000000 --- a/notification/src/main/res/layout/layout_notification_general_12.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/layout/layout_notification_general_big.xml b/notification/src/main/res/layout/layout_notification_general_big.xml deleted file mode 100644 index 8acaaee..0000000 --- a/notification/src/main/res/layout/layout_notification_general_big.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/notification/src/main/res/layout/layout_notification_general_big_12.xml b/notification/src/main/res/layout/layout_notification_general_big_12.xml deleted file mode 100644 index 34c42f3..0000000 --- a/notification/src/main/res/layout/layout_notification_general_big_12.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -