Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
A
appzxhy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
appzxhy
Commits
0e1e181b
Commit
0e1e181b
authored
Jun 06, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[新增]常驻通知栏UI和跳转。普通通知矢量图小图标
parent
7c867df0
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
274 additions
and
44 deletions
+274
-44
PopupConfigBean.kt
...main/java/com/base/appzxhy/bean/config/PopupConfigBean.kt
+2
-1
NotificationUiUtil.kt
.../appzxhy/business/push/notification/NotificationUiUtil.kt
+1
-1
StayJobService.kt
.../java/com/base/appzxhy/business/service/StayJobService.kt
+5
-3
StayNotification.kt
...ava/com/base/appzxhy/business/service/StayNotification.kt
+38
-36
stay_notification_big.xml
app/src/main/res/layout/stay_notification_big.xml
+114
-2
stay_notification_small.xml
app/src/main/res/layout/stay_notification_small.xml
+114
-1
No files found.
app/src/main/java/com/base/appzxhy/bean/config/PopupConfigBean.kt
View file @
0e1e181b
...
...
@@ -21,9 +21,10 @@ class PopupConfigBean(
val
screenS
:
Boolean
=
true
,
//解锁触发推送
val
alarmS
:
Boolean
=
true
,
//是否闹钟触发推送
val
workS
:
Boolean
=
true
,
//workManager触发推送
val
notifyForegroundInterval
:
Long
=
30000L
//常驻通知栏刷新通知间隔
)
{
companion
object
{
var
popupConfigBean
:
PopupConfigBean
=
PopupConfigBean
()
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/business/push/notification/NotificationUiUtil.kt
View file @
0e1e181b
...
...
@@ -166,7 +166,7 @@ object NotificationUiUtil {
//设置状态栏内的小图标
val
smallIcon
=
IconCompat
.
createFromIcon
(
context
,
Icon
.
createWithResource
(
context
,
R
.
drawable
.
log
_svg
context
,
R
.
drawable
.
icon_notification
_svg
)
)
smallIcon
?.
let
{
...
...
app/src/main/java/com/base/appzxhy/business/service/StayJobService.kt
View file @
0e1e181b
...
...
@@ -13,6 +13,7 @@ import android.os.Build
import
android.os.CountDownTimer
import
androidx.work.Configuration
import
com.base.appzxhy.BuildConfig
import
com.base.appzxhy.bean.config.PopupConfigBean
import
com.base.appzxhy.business.helper.EventUtils
import
com.base.appzxhy.business.service.StayNotification.createPermanentNotification
import
com.base.appzxhy.utils.LogEx
...
...
@@ -80,6 +81,7 @@ class StayJobService : JobService() {
}
private
fun
notifyForeground
()
{
LogEx
.
logDebug
(
TAG
,
"notifyForeground"
)
val
notificationManager
=
getSystemService
(
NOTIFICATION_SERVICE
)
as
NotificationManager
...
...
@@ -112,15 +114,15 @@ class StayJobService : JobService() {
return
false
}
val
millisInFuture
=
if
(
BuildConfig
.
DEBUG
)
5000L
else
30000L
val
millisInFuture
=
if
(
BuildConfig
.
DEBUG
)
5000L
else
PopupConfigBean
.
popupConfigBean
.
notifyForegroundInterval
private
inner
class
Timer
()
:
CountDownTimer
(
millisInFuture
,
1000
)
{
override
fun
onTick
(
millisUntilFinished
:
Long
)
{
// LogEx.logDebug(TAG, "Timer onTick")
}
override
fun
onFinish
()
{
LogEx
.
logDebug
(
TAG
,
"Timer onFinish"
)
//
LogEx.logDebug(TAG, "Timer onFinish")
notifyForeground
()
Timer
().
start
()
}
...
...
app/src/main/java/com/base/appzxhy/business/service/StayNotification.kt
View file @
0e1e181b
...
...
@@ -13,39 +13,47 @@ import android.widget.RemoteViews
import
androidx.core.app.NotificationCompat
import
androidx.core.graphics.drawable.IconCompat
import
com.base.appzxhy.R
import
com.base.appzxhy.business.service.StayJobService.Companion.NOTIFICATION_STAY_ID
import
com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import
com.base.appzxhy.bean.FeatureBean.Companion.RECOVERY_DOCUMENTS
import
com.base.appzxhy.bean.FeatureBean.Companion.RECOVERY_PHOTOS
import
com.base.appzxhy.bean.FeatureBean.Companion.RECOVERY_VIDEOS
import
com.base.appzxhy.ui.main.MainActivity
import
com.base.appzxhy.ui.splash.SplashActivity
import
kotlin.random.Random
object
StayNotification
{
private
fun
customRemoteViews
(
contentView
:
RemoteViews
,
expendView
:
RemoteViews
)
{
// val requestCode1 = Random.nextInt(1800)
// val intent1 = Intent(context, MyStartActivity::class.java).apply {
// putExtra("actionId", ConstObject.NOTIFICATION_ACTION_LOG)
// }
// val pendingIntent1 =
// PendingIntent.getActivity(
// context,
// requestCode1,
// intent1,
// PendingIntent.FLAG_IMMUTABLE
// )
// contentView.setOnClickPendingIntent(R.id.fl_1, pendingIntent1)
// expendView.setOnClickPendingIntent(R.id.fl_1, pendingIntent1)
private
fun
customRemoteViews
(
context
:
Context
,
contentView
:
RemoteViews
,
expendView
:
RemoteViews
)
{
arrayOf
(
R
.
id
.
llClean
,
R
.
id
.
llVideo
,
R
.
id
.
llPhoto
,
R
.
id
.
llDocument
).
forEach
{
val
requestCode
=
Random
.
nextInt
(
1800
)
val
intent
=
Intent
(
context
,
SplashActivity
::
class
.
java
).
apply
{
if
(
it
==
R
.
id
.
llClean
)
{
putExtra
(
"actionId"
,
JUNK_CLEAN
)
}
if
(
it
==
R
.
id
.
llVideo
)
{
putExtra
(
"actionId"
,
RECOVERY_VIDEOS
)
}
if
(
it
==
R
.
id
.
llPhoto
)
{
putExtra
(
"actionId"
,
RECOVERY_PHOTOS
)
}
if
(
it
==
R
.
id
.
llDocument
)
{
putExtra
(
"actionId"
,
RECOVERY_DOCUMENTS
)
}
}
val
pendingIntent
=
PendingIntent
.
getActivity
(
context
,
requestCode
,
intent
,
PendingIntent
.
FLAG_IMMUTABLE
)
contentView
.
setOnClickPendingIntent
(
it
,
pendingIntent
)
expendView
.
setOnClickPendingIntent
(
it
,
pendingIntent
)
}
}
fun
notifyStayNotification
(
context
:
Context
)
{
val
notificationManager
=
context
.
getSystemService
(
Context
.
NOTIFICATION_SERVICE
)
as
NotificationManager
notificationManager
.
notify
(
NOTIFICATION_STAY_ID
,
createPermanentNotification
(
context
)
)
}
fun
createPermanentNotification
(
context
:
Context
):
Notification
{
...
...
@@ -54,14 +62,12 @@ object StayNotification {
val
contentView
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
stay_notification_small
)
val
expendView
=
RemoteViews
(
context
.
packageName
,
R
.
layout
.
stay_notification_big
)
customRemoteViews
(
contentView
,
expendView
)
customRemoteViews
(
context
,
contentView
,
expendView
)
val
builder
=
NotificationCompat
.
Builder
(
context
,
channelId
)
val
smallIcon
=
IconCompat
.
createFromIcon
(
context
,
Icon
.
createWithResource
(
context
,
R
.
mipmap
.
ic_launcher
context
,
R
.
mipmap
.
logo
)
)
...
...
@@ -72,12 +78,8 @@ object StayNotification {
val
nfIntent
=
Intent
(
context
,
MainActivity
::
class
.
java
)
val
pendingIntent
=
PendingIntent
.
getActivity
(
context
,
0
,
nfIntent
,
PendingIntent
.
FLAG_IMMUTABLE
)
builder
.
setLargeIcon
(
BitmapFactory
.
decodeResource
(
context
.
resources
,
R
.
mipmap
.
ic_launcher
)
)
builder
.
setLargeIcon
(
BitmapFactory
.
decodeResource
(
context
.
resources
,
R
.
mipmap
.
logo
))
builder
.
setContentTitle
(
context
.
resources
.
getString
(
R
.
string
.
app_name
))
builder
.
setContentIntent
(
pendingIntent
)
//设置PendingIntent
builder
.
setVisibility
(
NotificationCompat
.
VISIBILITY_PRIVATE
)
//设置通知公开可见
...
...
app/src/main/res/layout/stay_notification_big.xml
View file @
0e1e181b
...
...
@@ -3,9 +3,121 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:paddingVertical=
"8dp"
android:orientation=
"horizontal"
tools:ignore=
"DisableBaselineAlignment"
>
<LinearLayout
android:id=
"@+id/llClean"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<ImageView
android:layout_width=
"@dimen/dp_45"
android:layout_height=
"@dimen/dp_45"
android:src=
"@drawable/icon_clean_stay"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end"
android:src=
"@drawable/icon_tixing"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/clean"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_15"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/llPhoto"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"@dimen/dp_45"
android:layout_height=
"@dimen/dp_45"
android:src=
"@drawable/icon_photos_stay"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/photos"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_15"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/llVideo"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"@dimen/dp_45"
android:layout_height=
"@dimen/dp_45"
android:src=
"@drawable/icon_videos_stay"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/videos"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_15"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/llDocument"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"@dimen/dp_45"
android:layout_height=
"@dimen/dp_45"
android:src=
"@drawable/icon_documents_stay"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/documents"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_15"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/stay_notification_small.xml
View file @
0e1e181b
...
...
@@ -3,7 +3,120 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
android:orientation=
"horizontal"
tools:ignore=
"DisableBaselineAlignment"
>
<LinearLayout
android:id=
"@+id/llClean"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<ImageView
android:layout_width=
"@dimen/dp_35"
android:layout_height=
"@dimen/dp_35"
android:src=
"@drawable/icon_clean_stay"
tools:ignore=
"ContentDescription"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end"
android:src=
"@drawable/icon_tixing"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/clean"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_12"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/llPhoto"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"@dimen/dp_35"
android:layout_height=
"@dimen/dp_35"
android:src=
"@drawable/icon_photos_stay"
tools:ignore=
"ContentDescription,ImageContrastCheck"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/photos"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_12"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/llVideo"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"@dimen/dp_35"
android:layout_height=
"@dimen/dp_35"
android:src=
"@drawable/icon_videos_stay"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/videos"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_12"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/llDocument"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:ignore=
"UseCompoundDrawables"
>
<ImageView
android:layout_width=
"@dimen/dp_35"
android:layout_height=
"@dimen/dp_35"
android:src=
"@drawable/icon_documents_stay"
tools:ignore=
"ContentDescription,ImageContrastCheck"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:includeFontPadding=
"false"
android:text=
"@string/documents"
android:textColor=
"#1A1A1A"
android:textSize=
"@dimen/sp_12"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment