Commit 1c5b2ab7 authored by wanglei's avatar wanglei

...

parent 665fae9a
...@@ -62,7 +62,7 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu ...@@ -62,7 +62,7 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
} }
fun refreshData() = lifecycleScope.launch(Dispatchers.IO) { fun refreshData() = lifecycleScope.launch(Dispatchers.IO) {
if (isInitialized && !isHidden) { if (isInitialized && !isHidden && !MainPresenter.mainRefreshData) {
LogEx.logDebug(TAG, "type=$type refreshData dataType=$dataType") LogEx.logDebug(TAG, "type=$type refreshData dataType=$dataType")
val list = val list =
(requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType) (requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType)
......
...@@ -31,9 +31,11 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity ...@@ -31,9 +31,11 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSelectActivity import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSelectActivity
import com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity import com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import com.base.pdfviewerscannerwhite.ui.document.word.WordActivity import com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.notificationDialogResumeShow
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showAppExitDialog import com.base.pdfviewerscannerwhite.ui.view.DialogView.showAppExitDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showNotificationDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission import com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments import com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
...@@ -73,6 +75,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView { ...@@ -73,6 +75,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
mainPresenter = MainPresenter(this, this, lifecycleScope) mainPresenter = MainPresenter(this, this, lifecycleScope)
mainPresenter.initScannerLauncher(this) mainPresenter.initScannerLauncher(this)
addDeskShortCut() addDeskShortCut()
} }
...@@ -149,6 +152,13 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView { ...@@ -149,6 +152,13 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
showPermissionDialog() showPermissionDialog()
return return
} }
//通知弹窗
if (bannerShowed && checkStorePermission() && notificationDialogResumeShow) {
notificationDialogResumeShow = true
showNotificationDialog(launcher)
}
} }
private var permissionDialog: Dialog? = null private var permissionDialog: Dialog? = null
...@@ -168,6 +178,8 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView { ...@@ -168,6 +178,8 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
if (!bannerShowed) { if (!bannerShowed) {
AdmobBannerUtils.showCollapsibleBannerAd(this, binding.flBanner) { AdmobBannerUtils.showCollapsibleBannerAd(this, binding.flBanner) {
bannerShowed = true bannerShowed = true
showNotificationDialog(launcher)
} }
} }
} }
......
...@@ -64,7 +64,12 @@ class MainPresenter( ...@@ -64,7 +64,12 @@ class MainPresenter(
private lateinit var scannerLauncher: ActivityResultLauncher<IntentSenderRequest> private lateinit var scannerLauncher: ActivityResultLauncher<IntentSenderRequest>
companion object {
var mainRefreshData: Boolean = false
}
fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) { fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) {
mainRefreshData = true
val start = System.currentTimeMillis() val start = System.currentTimeMillis()
Log.d("glc", "pdfs 清理前:" + pdfDocuments.size) Log.d("glc", "pdfs 清理前:" + pdfDocuments.size)
context.upDateDemoStore() context.upDateDemoStore()
...@@ -84,6 +89,7 @@ class MainPresenter( ...@@ -84,6 +89,7 @@ class MainPresenter(
wordDocuments.addAll(initAllWordData()) wordDocuments.addAll(initAllWordData())
excelDocuments.addAll(initAllExcelData()) excelDocuments.addAll(initAllExcelData())
pptDocuments.addAll(initAllPptData()) pptDocuments.addAll(initAllPptData())
mainRefreshData = false
lifecycleScope.launch(Dispatchers.Main) { lifecycleScope.launch(Dispatchers.Main) {
val end = System.currentTimeMillis() val end = System.currentTimeMillis()
val time = end - start val time = end - start
......
package com.base.pdfviewerscannerwhite.ui.view package com.base.pdfviewerscannerwhite.ui.view
import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
import android.os.Build
import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.LinearLayout.LayoutParams
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
import com.base.pdfviewerscannerwhite.R import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.ads.admob.AdmobNativeUtils import com.base.pdfviewerscannerwhite.ads.admob.AdmobNativeUtils
...@@ -25,6 +32,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogDocumentDetailBinding ...@@ -25,6 +32,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogDocumentDetailBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDocumentHomeMoreBinding import com.base.pdfviewerscannerwhite.databinding.DialogDocumentHomeMoreBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDocumentMoreBinding import com.base.pdfviewerscannerwhite.databinding.DialogDocumentMoreBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDocumentRenameBinding import com.base.pdfviewerscannerwhite.databinding.DialogDocumentRenameBinding
import com.base.pdfviewerscannerwhite.databinding.DialogNotificationEnableBinding
import com.base.pdfviewerscannerwhite.databinding.DialogPageNumberBinding import com.base.pdfviewerscannerwhite.databinding.DialogPageNumberBinding
import com.base.pdfviewerscannerwhite.databinding.DialogSortBinding import com.base.pdfviewerscannerwhite.databinding.DialogSortBinding
import com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding import com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding
...@@ -472,4 +480,47 @@ object DialogView { ...@@ -472,4 +480,47 @@ object DialogView {
dialog.dismiss() dialog.dismiss()
} }
} }
var notificationDialogResumeShow: Boolean = true
fun Activity.showNotificationDialog(launcher: ActivityLauncher) {
// if (checkNotificationPermission()) return
val dialog = AlertDialog.Builder(this).create()
val binding = DialogNotificationEnableBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
val params = dialog.window?.attributes
params?.width = resources.getDimensionPixelOffset(R.dimen.dp_345)
params?.height = LinearLayout.LayoutParams.WRAP_CONTENT
params?.gravity = Gravity.CENTER
dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
val parentView = binding.root.parent as View
val behavior = BottomSheetBehavior.from(parentView)
//展开
behavior.state = BottomSheetBehavior.STATE_EXPANDED
binding.tvOk.setOnClickListener {
dialog.dismiss()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
notificationDialogResumeShow = false
launcher.launch(arrayOf(Manifest.permission.POST_NOTIFICATIONS)) {
}
}
}
binding.tvNo.setOnClickListener {
dialog.dismiss()
}
binding.flClose.setOnClickListener {
dialog.dismiss()
}
}
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import android.os.Build ...@@ -9,6 +9,7 @@ import android.os.Build
import android.os.Environment import android.os.Environment
import android.provider.Settings import android.provider.Settings
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
object PermissionUtils { object PermissionUtils {
...@@ -22,6 +23,14 @@ object PermissionUtils { ...@@ -22,6 +23,14 @@ object PermissionUtils {
} }
} }
fun Context.checkNotificationPermission(): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
ActivityCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
} else {
return true
}
}
fun Context.requestStoragePermission( fun Context.requestStoragePermission(
launcher: ActivityLauncher, launcher: ActivityLauncher,
jumpAction: (() -> Unit)? = null, jumpAction: (() -> Unit)? = null,
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp" />
<solid android:color="@color/white" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dp"
android:color="#000000" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="345dp"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="115dp"
android:background="@drawable/bg_00b8de_tl15_tr15">
<LinearLayout
android:layout_width="291dp"
android:layout_height="54dp"
android:layout_gravity="center"
android:background="@mipmap/bg_message_8"
android:orientation="horizontal">
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="8dp"
android:layout_marginBottom="3dp"
app:cardCornerRadius="7.5dp"
app:cardElevation="0dp">
<ImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@mipmap/logo"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="3dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/unfinished_documents_to_read"
android:textColor="@color/black"
android:textSize="10sp"
android:textStyle="bold"
tools:ignore="SmallSp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@string/click_to_view_details"
android:textColor="#999999"
android:textSize="10sp"
tools:ignore="SmallSp" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_bl15_br15">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="28dp"
android:text="@string/please_grant_notification_permissions"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="18dp"
android:text="@string/notification_enable_tips"
android:textColor="#666666"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_ok"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:background="@drawable/bg_00b8de_10"
android:gravity="center"
android:text="@string/enable_notifications"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/tv_no"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_stroke_a0a0a0_10"
android:gravity="center"
android:text="@string/not_open"
android:textSize="18sp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/fl_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:padding="8dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/guanbi_8"
tools:ignore="ContentDescription" />
</FrameLayout>
</LinearLayout>
\ No newline at end of file
<com.google.android.gms.ads.nativead.NativeAdView xmlns:android="http://schemas.android.com/apk/res/android" <com.google.android.gms.ads.nativead.NativeAdView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:layout_marginHorizontal="8dp">
<View
android:layout_width="match_parent"
android:layout_height="1.5dp"
android:background="#D2D2D2" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginHorizontal="8dp"
android:layout_marginVertical="8dp" android:layout_marginVertical="8dp"
android:baselineAligned="false"> android:baselineAligned="false">
......
...@@ -4,4 +4,5 @@ ...@@ -4,4 +4,5 @@
<dimen name="dp_4">4dp</dimen> <dimen name="dp_4">4dp</dimen>
<dimen name="dp_200">200dp</dimen> <dimen name="dp_200">200dp</dimen>
<dimen name="dp_146">146dp</dimen> <dimen name="dp_146">146dp</dimen>
<dimen name="dp_345">345dp</dimen>
</resources> </resources>
\ No newline at end of file
...@@ -94,5 +94,11 @@ ...@@ -94,5 +94,11 @@
<string name="click_to_read_now">Click to read now</string> <string name="click_to_read_now">Click to read now</string>
<string name="don_t_miss_important_documents">Don\'t miss important documents</string> <string name="don_t_miss_important_documents">Don\'t miss important documents</string>
<string name="view_now">View Now</string> <string name="view_now">View Now</string>
<string name="please_grant_notification_permissions">Please grant notification permissions</string>
<string name="notification_enable_tips">Enabling notification permissions will allow you to receive future notification promptly and display unique messafe banners</string>
<string name="enable_notifications">Enable notifications</string>
<string name="not_open">Not open</string>
<string name="unfinished_documents_to_read">You still have some unfinished documents to read.</string>
<string name="click_to_view_details">Click to view details.</string>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment