Commit bf517a8e authored by wanglei's avatar wanglei

...

parent b541748d
package com.base.pdfreaderallpdfreader.ui.main
import android.Manifest
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.text.Spannable
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.util.Log
import androidx.activity.addCallback
import androidx.core.view.GravityCompat
import androidx.core.view.updatePadding
......@@ -25,6 +27,7 @@ import com.base.pdfreaderallpdfreader.ui.language.LanguageActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import com.base.pdfreaderallpdfreader.ui.search.SearchActivity
import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showAppExitDialog
import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showNotificationDialog
import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showStoragePermission
import com.base.pdfreaderallpdfreader.ui.view.NameDialog.showDocumentRenameDialog
import com.base.pdfreaderallpdfreader.ui.view.PwdDialog.showPdfPwdDialog
......@@ -32,6 +35,7 @@ import com.base.pdfreaderallpdfreader.ui.view.RateDialog.showRateDialog
import com.base.pdfreaderallpdfreader.utils.BarUtils
import com.base.pdfreaderallpdfreader.utils.LogEx
import com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkNotificationPermission
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import com.base.pdfreaderallpdfreader.utils.ShortcutUtils.addDeskShortCut
import com.base.pdfreaderallpdfreader.utils.updateMediaStore
......@@ -90,6 +94,14 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
if (!checkStorePermission()) {
showStoragePermission(launcher)
} else {
val flag = checkNotificationPermission()
LogEx.logDebug(TAG, "checkNotificationPermission flag=$flag")
if (!flag) {
showNotificationDialog(launcher)
} else {
launcher.launch(arrayOf(Manifest.permission.POST_NOTIFICATIONS)) {}
}
}
addDeskShortCut()
......
......@@ -19,7 +19,6 @@ import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfSelectActivity
import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showStoragePermission
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.requestStoragePermission
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
......@@ -52,84 +51,47 @@ class HomeFragment : Fragment() {
val launcher = (requireActivity() as MainActivity).launcher
binding.clPdfReader.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), DocumentActivity::class.java))
}
}
binding.llEditPdf.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), DocumentActivity::class.java).apply {
putExtra("initTab", 1)
})
}
}
binding.llMergePdf.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
PdfActivity.jumpMerge(requireActivity())
}
}
binding.llSplitPdf.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), PdfSelectActivity::class.java).apply {
putExtra("doWhat", DO_SPLIT_PDF)
})
}
}
binding.llLockPdf.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), PdfSelectActivity::class.java).apply {
putExtra("doWhat", DO_LOCK_PDF)
})
}
}
binding.llWord.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), DocumentActivity::class.java).apply {
putExtra("initTab", 2)
})
}
}
binding.llExcel.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), DocumentActivity::class.java).apply {
putExtra("initTab", 3)
})
}
}
binding.llPpt.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), DocumentActivity::class.java).apply {
putExtra("initTab", 4)
})
}
}
binding.llOther.setOnClickListener {
if (!requireContext().checkStorePermission()) {
requireContext().showStoragePermission(launcher)
} else {
startActivity(Intent(requireContext(), DocumentActivity::class.java).apply {
putExtra("initTab", 0)
})
}
}
if (requireContext().checkStorePermission()) {
......
......@@ -641,7 +641,7 @@ class PdfActivity : BaseActivity<ActivityPdfBinding>() {
if (item.state == 0) {
activity.startActivity(Intent(activity, PdfActivity::class.java).apply {
putExtra("path", item.path)
putExtra("uri", item.uri)
putExtra("uri", item.uri.toString())
})
}
if (item.state == 1) {
......
......@@ -7,6 +7,7 @@ import com.base.pdfreaderallpdfreader.ads.AdmobHelper.open_ad_loading
import com.base.pdfreaderallpdfreader.bean.ConstObject
import com.base.pdfreaderallpdfreader.utils.AppPreferences
import com.base.pdfreaderallpdfreader.utils.LogEx
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
......@@ -25,12 +26,12 @@ class SplashViewModel : ViewModel() {
if (ConstObject.ifAgreePrivacy && startJumpJob) {
if (jumpJob == null) {
val startTime = System.currentTimeMillis()
jumpJob = viewModelScope.launch {
jumpJob = viewModelScope.launch(Dispatchers.IO) {
LogEx.logDebug(TAG, "open_ad_loading=$loadingTime")
delay(loadingTime * 1000L)
val endTime = System.currentTimeMillis()
LogEx.logDebug(TAG, "超时跳转 time=${endTime - startTime}")
splashActivity.jumpNext()
launch(Dispatchers.Main) { splashActivity.jumpNext() }
}
}
}
......
package com.base.pdfreaderallpdfreader.ui.view
import android.Manifest
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.provider.Settings
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.widget.LinearLayout
import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.ads.admob.AdmobNativeUtils
import com.base.pdfreaderallpdfreader.databinding.DialogAppExitBinding
import com.base.pdfreaderallpdfreader.databinding.DialogNotificationEnableBinding
import com.base.pdfreaderallpdfreader.databinding.DialogStoragePermissionBinding
import com.base.pdfreaderallpdfreader.utils.ActivityLauncher
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.requestStoragePermission
......@@ -88,4 +96,35 @@ object MainDialog {
dialog.dismiss()
}
}
fun Activity.showNotificationDialog(launcher: ActivityLauncher) {
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)
binding.tvOk.setOnClickListener {
dialog.dismiss()
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
}
launcher.launch(intent)
}
binding.tvNo.setOnClickListener {
dialog.dismiss()
}
binding.flClose.setOnClickListener {
dialog.dismiss()
}
}
}
\ No newline at end of file
package com.base.pdfreaderallpdfreader.utils
import android.Manifest
import android.app.NotificationManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
......@@ -24,12 +25,15 @@ 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
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val areNotificationsEnabled = notificationManager.areNotificationsEnabled()
areNotificationsEnabled
} else {
return true
ActivityCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
}
}
fun Context.requestStoragePermission(
launcher: ActivityLauncher,
jumpAction: (() -> Unit)? = null,
......
......@@ -45,7 +45,7 @@ object ShortcutUtils {
.build()
//setDynamicShortcuts()方法来设置快捷方式
shortcutManager.setDynamicShortcuts(listOf(shortcut1, shortcut2, shortcut3))
shortcutManager.setDynamicShortcuts(listOf(shortcut2, shortcut3))
}
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
<solid android:color="#FD0030" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF0030" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
<?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
......@@ -94,6 +94,7 @@
tools:text="AII PDF Reader" />
<TextView
android:id="@+id/tv_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
......@@ -105,4 +106,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_spanner" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="@string/loading_may_contain_ads"
android:textColor="#8A8A8A"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_tip" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -55,13 +55,13 @@
android:background="?android:selectableItemBackground"
android:orientation="horizontal">
<!-- android:src="@mipmap/jump"-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="13dp"
android:src="@mipmap/pdf_jump"
tools:ignore="ContentDescription" />
<TextView
......
<?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_fd0030_tl15_tr15">
<LinearLayout
android:layout_width="291dp"
android:layout_height="54dp"
android:layout_gravity="center"
android:background="@mipmap/pdf_k"
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_ff0030_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
......@@ -8,4 +8,5 @@
<dimen name="dp_200">200dp</dimen>
<dimen name="dp_146">146dp</dimen>
<dimen name="dp_50">50dp</dimen>
<dimen name="dp_345">345dp</dimen>
</resources>
\ No newline at end of file
......@@ -101,5 +101,13 @@
<string name="unlock_pdf">Unlock Pdf</string>
<string name="no_bookmark_file">No Bookmark File</string>
<string name="exit">Exit</string>
<string name="loading_may_contain_ads">Loading may contain ads</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>
<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 message banners</string>
<string name="enable_notifications">Enable notifications</string>
<string name="not_open">Not open</string>
</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