Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
SuperEasyClean
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
songjianyu
SuperEasyClean
Commits
36e9bd12
Commit
36e9bd12
authored
Jun 06, 2025
by
wanglei
Committed by
songjianyu
Jun 09, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[新增]常驻通知栏UI和跳转。普通通知矢量图小图标
parent
27912a2b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
273 additions
and
43 deletions
+273
-43
PopupConfigBean.kt
...main/java/com/base/appzxhy/bean/config/PopupConfigBean.kt
+2
-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 @
36e9bd12
...
...
@@ -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/service/StayJobService.kt
View file @
36e9bd12
...
...
@@ -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 @
36e9bd12
...
...
@@ -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 @
36e9bd12
...
...
@@ -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 @
36e9bd12
...
...
@@ -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