From 6555346618b7c0191c0423b3d0c41ea139833563 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Tue, 6 May 2025 17:04:14 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=80=9A=E7=9F=A5=E6=A0=8F?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- timestamp/build.properties | 4 +- .../timestamp/utils/NotificationHelper.java | 2 +- .../utils/TimeStampRemoteViewsUtil.java | 146 +++++++++++------- 3 files changed, 92 insertions(+), 60 deletions(-) diff --git a/timestamp/build.properties b/timestamp/build.properties index 22ee0a3..e80e2e2 100644 --- a/timestamp/build.properties +++ b/timestamp/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue May 06 11:34:02 HKT 2025 +#Tue May 06 09:02:43 GMT 2025 stageCount=3 libraryProject= baseVersion=15.0 publishVersion=15.0.2 -buildCount=0 +buildCount=2 baseBetaVersion=15.0.3 diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java index 39c826c..7e51d49 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java @@ -120,7 +120,7 @@ public class NotificationHelper { PendingIntent pendingIntent = createPendingIntent(intent); - Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID_TEMPORARY) + Notification notification = new NotificationCompat.Builder(mContext, CHANNEL_ID_FOREGROUND) .setSmallIcon(R.drawable.ic_launcher) .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_launcher)) //.setContentTitle(title) diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java index 4c1113b..f9c59fb 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java @@ -5,16 +5,12 @@ package cc.winboll.studio.timestamp.utils; * @Date 2025/05/05 21:10 * @Describe TimeStampRemoteViewsUtil */ -import android.app.Notification; -import android.app.NotificationChannel; -import android.app.NotificationManager; + + import android.app.PendingIntent; import android.content.Context; import android.content.Intent; -import android.os.Build; import android.widget.RemoteViews; -import android.widget.TextView; -import androidx.core.app.NotificationCompat; import cc.winboll.studio.timestamp.MainActivity; import cc.winboll.studio.timestamp.R; import cc.winboll.studio.timestamp.receivers.ButtonClickReceiver; @@ -27,13 +23,16 @@ public class TimeStampRemoteViewsUtil { static volatile TimeStampRemoteViewsUtil _TimeStampRemoteViewsUtil; Context mContext; + NotificationHelper mNotificationHelper; RemoteViews mRemoteViews; - TextView mtvMessage; - Notification mNotification; + Intent mIntentMain; + + TimeStampRemoteViewsUtil(Context context) { mContext = context; - createNotificationChannel(); + mNotificationHelper = new NotificationHelper(context); + //createNotificationChannel(); } public static synchronized TimeStampRemoteViewsUtil getInstance(Context context) { @@ -42,60 +41,93 @@ public class TimeStampRemoteViewsUtil { } return _TimeStampRemoteViewsUtil; } - - private void createNotificationChannel() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - CharSequence name = "自定义视图通知通道"; - String description = "用于展示自定义视图的通知通道"; - int importance = NotificationManager.IMPORTANCE_HIGH; - NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); - channel.setDescription(description); - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.createNotificationChannel(channel); - } - } + +// private void createNotificationChannel() { +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { +// CharSequence name = "自定义视图通知通道"; +// String description = "用于展示自定义视图的通知通道"; +// int importance = NotificationManager.IMPORTANCE_HIGH; +// NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); +// channel.setDescription(description); +// NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); +// notificationManager.createNotificationChannel(channel); +// } +// } + +// public void showNotification(String msg) { +// if (mRemoteViews == null) { +// // 创建 RemoteViews 对象,加载布局 +// mRemoteViews = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification_layout); +// +// } +// // 自定义 TextView 的文本 +// mRemoteViews.setTextViewText(R.id.tv_timestamp, msg); +// // 自定义 TextView 的文本颜色 +// mRemoteViews.setTextColor(R.id.tv_timestamp, mContext.getResources().getColor(R.color.colorAccent, null)); +// // 这里虽然不能直接设置字体大小,但可以通过反射等方式尝试(不推荐,且有兼容性问题) +// +// // 创建点击通知后的意图 +// Intent intent = new Intent(mContext, MainActivity.class); +// PendingIntent pendingMainIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); +// // 设置通知的点击事件 +// mRemoteViews.setOnClickPendingIntent(R.id.tv_timestamp, pendingMainIntent); +// +// // 创建点击按钮后要发送的广播 Intent +// Intent broadcastIntent = new Intent(ButtonClickReceiver.BUTTON_COPYTIMESTAMP_ACTION); +// android.app.PendingIntent pendingIntent = android.app.PendingIntent.getBroadcast( +// mContext, +// 0, +// broadcastIntent, +// android.app.PendingIntent.FLAG_UPDATE_CURRENT +// ); +// +// // 为按钮设置点击事件 +// mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, pendingIntent); +// +// // 构建通知 +// NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, CHANNEL_ID) +// .setSmallIcon(android.R.drawable.ic_dialog_info) +// .setContent(mRemoteViews) +// .setPriority(NotificationCompat.PRIORITY_HIGH) +// .setOngoing(true) +// .setAutoCancel(true); +// +// // 显示通知 +// NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); +// mNotification = builder.build(); +// notificationManager.notify(1, mNotification); +// } public void showNotification(String msg) { if (mRemoteViews == null) { // 创建 RemoteViews 对象,加载布局 mRemoteViews = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification_layout); - + + // 自定义 TextView 的文本 + mRemoteViews.setTextViewText(R.id.tv_timestamp, msg); + // 自定义 TextView 的文本颜色 + mRemoteViews.setTextColor(R.id.tv_timestamp, mContext.getResources().getColor(R.color.colorAccent, null)); + // 这里虽然不能直接设置字体大小,但可以通过反射等方式尝试(不推荐,且有兼容性问题) + + // 创建点击通知后的意图 + mIntentMain = new Intent(mContext, MainActivity.class); + PendingIntent pendingMainIntent = PendingIntent.getActivity(mContext, 0, mIntentMain, PendingIntent.FLAG_UPDATE_CURRENT); + // 设置通知的点击事件 + mRemoteViews.setOnClickPendingIntent(R.id.tv_timestamp, pendingMainIntent); + + // 创建点击按钮后要发送的广播 Intent + Intent broadcastIntent = new Intent(ButtonClickReceiver.BUTTON_COPYTIMESTAMP_ACTION); + android.app.PendingIntent pendingIntent = android.app.PendingIntent.getBroadcast( + mContext, + 0, + broadcastIntent, + android.app.PendingIntent.FLAG_UPDATE_CURRENT + ); + + // 为按钮设置点击事件 + mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, pendingIntent); } - // 自定义 TextView 的文本 - mRemoteViews.setTextViewText(R.id.tv_timestamp, msg); - // 自定义 TextView 的文本颜色 - mRemoteViews.setTextColor(R.id.tv_timestamp, mContext.getResources().getColor(R.color.colorAccent, null)); - // 这里虽然不能直接设置字体大小,但可以通过反射等方式尝试(不推荐,且有兼容性问题) - - // 创建点击通知后的意图 - Intent intent = new Intent(mContext, MainActivity.class); - PendingIntent pendingMainIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); - // 设置通知的点击事件 - mRemoteViews.setOnClickPendingIntent(R.id.tv_timestamp, pendingMainIntent); - - // 创建点击按钮后要发送的广播 Intent - Intent broadcastIntent = new Intent(ButtonClickReceiver.BUTTON_COPYTIMESTAMP_ACTION); - android.app.PendingIntent pendingIntent = android.app.PendingIntent.getBroadcast( - mContext, - 0, - broadcastIntent, - android.app.PendingIntent.FLAG_UPDATE_CURRENT - ); - // 为按钮设置点击事件 - mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, pendingIntent); - - // 构建通知 - NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, CHANNEL_ID) - .setSmallIcon(android.R.drawable.ic_dialog_info) - .setContent(mRemoteViews) - .setPriority(NotificationCompat.PRIORITY_HIGH) - .setOngoing(true) - .setAutoCancel(true); - - // 显示通知 - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - mNotification = builder.build(); - notificationManager.notify(1, mNotification); + mNotificationHelper.showCustomForegroundNotification(mIntentMain, mRemoteViews, mRemoteViews); } }