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
090fac62
Commit
090fac62
authored
Jun 09, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[新增]打开通知相关的弹窗
parent
0cb73138
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
174 additions
and
7 deletions
+174
-7
NotificationTurnOnDialog.kt
...va/com/base/appzxhy/ui/dialog/NotificationTurnOnDialog.kt
+43
-0
MainActivity.kt
app/src/main/java/com/base/appzxhy/ui/main/MainActivity.kt
+17
-1
MainViewModel.kt
app/src/main/java/com/base/appzxhy/ui/main/MainViewModel.kt
+17
-4
PermissionUtils.kt
app/src/main/java/com/base/appzxhy/utils/PermissionUtils.kt
+33
-2
icon_close_pop_blue.png
app/src/main/res/drawable-xxhdpi/icon_close_pop_blue.png
+0
-0
dialog_notification.xml
app/src/main/res/layout/dialog_notification.xml
+64
-0
No files found.
app/src/main/java/com/base/appzxhy/ui/dialog/NotificationTurnOnDialog.kt
0 → 100644
View file @
090fac62
package
com.base.appzxhy.ui.dialog
import
android.app.Activity
import
android.view.LayoutInflater
import
androidx.appcompat.app.AlertDialog
import
androidx.constraintlayout.widget.ConstraintLayout
import
com.base.appzxhy.R
import
com.base.appzxhy.databinding.DialogNotificationBinding
class
NotificationTurnOnDialog
(
val
activity
:
Activity
)
{
val
dialog
=
AlertDialog
.
Builder
(
activity
).
create
()
val
binding
=
DialogNotificationBinding
.
inflate
(
LayoutInflater
.
from
(
activity
))
var
action
:
(()
->
Unit
)?
=
null
fun
showDialog
()
{
dialog
.
setView
(
binding
.
root
)
dialog
.
setCancelable
(
true
)
dialog
.
setCanceledOnTouchOutside
(
true
)
dialog
.
show
()
val
params
=
dialog
.
window
?.
attributes
// params?.width = ConstraintLayout.LayoutParams.MATCH_PARENT
params
?.
width
=
activity
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_295
)
params
?.
height
=
ConstraintLayout
.
LayoutParams
.
WRAP_CONTENT
// params?.gravity = Gravity.BOTTOM
dialog
.
window
?.
attributes
=
params
dialog
.
window
?.
setBackgroundDrawableResource
(
android
.
R
.
color
.
transparent
)
binding
.
tvTurnOn
.
setOnClickListener
{
dialog
.
dismiss
()
action
?.
invoke
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/main/MainActivity.kt
View file @
090fac62
...
...
@@ -19,9 +19,12 @@ import com.base.appzxhy.business.ads.AdsMgr
import
com.base.appzxhy.databinding.ActivityMainBinding
import
com.base.appzxhy.databinding.ItemHomeTabBinding
import
com.base.appzxhy.ui.dialog.AppExitDialog
import
com.base.appzxhy.ui.dialog.NotificationTurnOnDialog
import
com.base.appzxhy.ui.dialog.RateDialog
import
com.base.appzxhy.ui.dialog.StoragePermissionDialog
import
com.base.appzxhy.ui.dialog.permissionStorageJump
import
com.base.appzxhy.ui.recyclebin.RecycleBinFragment
import
com.base.appzxhy.utils.PermissionUtils.requestNotificationPermission
import
com.base.appzxhy.utils.PermissionUtils.requestStoragePermission
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
...
...
@@ -63,13 +66,26 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
"StoreDialog"
->
{
val
dialog
=
StoragePermissionDialog
(
this
@MainActivity
)
dialog
.
action
=
{
requestStoragePermission
(
launcher
)
{
}
requestStoragePermission
(
launcher
)
{
viewModel
.
nextShowDialog
=
false
}
}
dialog
.
showDialog
()
}
"NotificationDialog"
->
{
val
dialog
=
NotificationTurnOnDialog
(
this
@MainActivity
)
dialog
.
action
=
{
requestNotificationPermission
(
launcher
)
{
viewModel
.
nextShowDialog
=
false
}
}
dialog
.
showDialog
()
}
"RateDialog"
->
{
val
dialog
=
RateDialog
(
this
@MainActivity
)
dialog
.
showDialog
(
false
)
}
}
}
...
...
app/src/main/java/com/base/appzxhy/ui/main/MainViewModel.kt
View file @
090fac62
...
...
@@ -3,7 +3,9 @@ package com.base.appzxhy.ui.main
import
android.content.Context
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
com.base.appzxhy.SpConstObject.isScoreRated
import
com.base.appzxhy.ui.recyclebin.RecycleBinUtils.getRecycleBinData
import
com.base.appzxhy.utils.PermissionUtils.checkNotificationPermission
import
com.base.appzxhy.utils.PermissionUtils.checkStorePermission
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.flow.MutableStateFlow
...
...
@@ -17,15 +19,26 @@ class MainViewModel : ViewModel() {
var
nextShowDialog
:
Boolean
=
true
fun
checkDialog
(
context
:
Context
)
{
if
(!
nextShowDialog
)
{
nextShowDialog
=
true
return
}
if
(!
context
.
checkStorePermission
())
{
dialogFlow
.
update
{
"StoreDialog"
}
return
}
// if (!context.checkNotificationPermission()) {
// dialogFlow.update { "NotificationDialog" }
// return
// }
if
(!
context
.
checkNotificationPermission
())
{
dialogFlow
.
update
{
"NotificationDialog"
}
return
}
if
(!
isScoreRated
)
{
dialogFlow
.
update
{
"RateDialog"
}
return
}
}
var
recycleBinFileFlow
:
MutableStateFlow
<
List
<
File
>>
=
MutableStateFlow
(
listOf
())
...
...
app/src/main/java/com/base/appzxhy/utils/PermissionUtils.kt
View file @
090fac62
...
...
@@ -53,10 +53,37 @@ object PermissionUtils {
}
}
fun
Context
.
checkAllLocationPermission
():
Boolean
{
return
checkLocationPermission
()
&&
checkBackgroundLocationPermission
()
fun
Context
.
requestNotificationPermission
(
launcher
:
ActivityLauncher
,
result
:
(
Boolean
)
->
Unit
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
TIRAMISU
)
{
val
array
=
arrayOf
(
Manifest
.
permission
.
POST_NOTIFICATIONS
)
launcher
.
launch
(
array
)
{
permissions
->
val
flag
=
permissions
.
values
.
all
{
it
}
if
(!
flag
)
notificationSettings
(
launcher
,
result
)
}
}
else
{
notificationSettings
(
launcher
,
result
)
}
}
fun
Context
.
notificationSettings
(
launcher
:
ActivityLauncher
,
result
:
(
Boolean
)
->
Unit
)
{
val
intent
=
Intent
()
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
intent
.
action
=
Settings
.
ACTION_APP_NOTIFICATION_SETTINGS
intent
.
putExtra
(
Settings
.
EXTRA_APP_PACKAGE
,
packageName
)
}
else
{
intent
.
action
=
"android.settings.APP_NOTIFICATION_SETTINGS"
intent
.
putExtra
(
"app_package"
,
packageName
)
}
launcher
.
launch
(
intent
)
{
result
.
invoke
(
checkNotificationPermission
())
}
}
//endregion
//region 储存
...
...
@@ -96,6 +123,10 @@ object PermissionUtils {
//endregion
//region 定位
fun
Context
.
checkAllLocationPermission
():
Boolean
{
return
checkLocationPermission
()
&&
checkBackgroundLocationPermission
()
}
fun
Context
.
checkLocationPermission
():
Boolean
{
val
fineLocationPermission
=
ActivityCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
ACCESS_FINE_LOCATION
)
...
...
app/src/main/res/drawable-xxhdpi/icon_close_pop_blue.png
0 → 100644
View file @
090fac62
3.29 KB
app/src/main/res/layout/dialog_notification.xml
0 → 100644
View file @
090fac62
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@drawable/tancuang"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/ivClose"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"136dp"
android:layout_marginEnd=
"24dp"
android:src=
"@drawable/icon_close_pop_blue"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_title"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"246dp"
android:text=
"@string/notification_title"
android:textAlignment=
"center"
android:textColor=
"@color/color_1a1a1a"
android:textSize=
"22sp"
android:textStyle=
"bold"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tv_content"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"8dp"
android:text=
"@string/notification_content"
android:textAlignment=
"center"
android:textColor=
"@color/color_666666"
android:textSize=
"16sp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tv_title"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/tvTurnOn"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"60dp"
android:layout_marginTop=
"20dp"
android:layout_marginBottom=
"44dp"
android:background=
"@drawable/bg_splash_button"
android:gravity=
"center"
android:paddingTop=
"10dp"
android:paddingBottom=
"10dp"
android:text=
"@string/turn_on"
android:textColor=
"@color/white"
android:textSize=
"20sp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tv_content"
app:layout_constraintVertical_bias=
"0.0"
tools:layout_editor_absoluteX=
"60dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ 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