Commit d613a963 authored by wanglei's avatar wanglei

...处理弹窗问题

parent 8e11824f
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
<activity <activity
android:name=".ui.main.MainActivity" android:name=".ui.main.MainActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTask"
android:theme="@style/Theme.PdfReaderAllPdfReader.NoActionBar" /> android:theme="@style/Theme.PdfReaderAllPdfReader.NoActionBar" />
<activity <activity
android:name=".ui.language.LanguageActivity" android:name=".ui.language.LanguageActivity"
......
...@@ -20,7 +20,9 @@ import com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_WORD ...@@ -20,7 +20,9 @@ import com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfreaderallpdfreader.bean.MediaBean import com.base.pdfreaderallpdfreader.bean.MediaBean
import com.base.pdfreaderallpdfreader.helper.MyApplication.Companion.context import com.base.pdfreaderallpdfreader.helper.MyApplication.Companion.context
import com.base.pdfreaderallpdfreader.utils.AssetUtils.readByteArrayFromAsset import com.base.pdfreaderallpdfreader.utils.AssetUtils.readByteArrayFromAsset
import com.base.pdfreaderallpdfreader.utils.LogEx
import com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption import com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import com.base.pdfreaderallpdfreader.utils.SpStringUtils import com.base.pdfreaderallpdfreader.utils.SpStringUtils
import com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY import com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY
import com.base.pdfreaderallpdfreader.utils.getMediaFile import com.base.pdfreaderallpdfreader.utils.getMediaFile
...@@ -42,9 +44,15 @@ fun getDocumentAppDir(): File { ...@@ -42,9 +44,15 @@ fun getDocumentAppDir(): File {
return appDir return appDir
} }
fun Context.saveAssetsFile() { fun getDemoDir(): File {
val demoFile = File(filesDir, "demo") val demoFile = File(getDocumentAppDir(), "demo")
if (!demoFile.exists()) {
demoFile.mkdirs() demoFile.mkdirs()
}
return demoFile
}
fun Context.saveAssetsFile() {
arrayOf( arrayOf(
"DEMO.pdf", "DEMO.pdf",
"DEMO.docx", "DEMO.docx",
...@@ -52,7 +60,7 @@ fun Context.saveAssetsFile() { ...@@ -52,7 +60,7 @@ fun Context.saveAssetsFile() {
"DEMO.pptx" "DEMO.pptx"
).forEach { ).forEach {
val file = File(demoFile, it) val file = File(getDemoDir(), it)
if (file.exists() && file.length() != 0L) { if (file.exists() && file.length() != 0L) {
return return
} }
...@@ -70,44 +78,44 @@ fun Context.saveAssetsFile() { ...@@ -70,44 +78,44 @@ fun Context.saveAssetsFile() {
fun getPdfDemo(context: Context): DocumentBean { fun getPdfDemo(context: Context): DocumentBean {
val demoDocumentBean = DocumentBean() val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_PDF demoDocumentBean.type = TYPE_PDF
val demoFile = File(context.filesDir, "demo") val demoFile = getDemoDir()
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pdf") }?.absolutePath ?: "" demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pdf") }?.absolutePath ?: ""
context.pdfCheck(demoDocumentBean) context.pdfCheck(demoDocumentBean)
return demoDocumentBean return demoDocumentBean
} }
fun getWordDemo(context: Context): DocumentBean { fun getWordDemo(): DocumentBean {
val demoDocumentBean = DocumentBean() val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_WORD demoDocumentBean.type = TYPE_WORD
val demoFile = File(context.filesDir, "demo") val demoFile = getDemoDir()
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".docx") }?.absolutePath ?: "" demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".docx") }?.absolutePath ?: ""
return demoDocumentBean return demoDocumentBean
} }
fun getExcelDemo(context: Context): DocumentBean { fun getExcelDemo(): DocumentBean {
val demoDocumentBean = DocumentBean() val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_EXCEL demoDocumentBean.type = TYPE_EXCEL
val demoFile = File(context.filesDir, "demo") val demoFile = getDemoDir()
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".xlsx") }?.absolutePath ?: "" demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".xlsx") }?.absolutePath ?: ""
return demoDocumentBean return demoDocumentBean
} }
fun getPPtDemo(context: Context): DocumentBean { fun getPPtDemo(): DocumentBean {
val demoDocumentBean = DocumentBean() val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_PPT demoDocumentBean.type = TYPE_PPT
val demoFile = File(context.filesDir, "demo") val demoFile = getDemoDir()
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pptx") }?.absolutePath ?: "" demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pptx") }?.absolutePath ?: ""
return demoDocumentBean return demoDocumentBean
} }
fun getAllDocument(context: Context): MutableList<DocumentBean> { fun getAllDocument(context: Context): MutableList<DocumentBean> {
context.upDateDemoStore() context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) { if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile() context.saveAssetsFile()
ConstObject.haveSaveDemo = true ConstObject.haveSaveDemo = true
} }
val selectionArgs = arrayOf( val selectionArgs = arrayOf(
MIME_TYPE_PDF, MIME_TYPE_PDF,
MIME_TYPE_DOC, MIME_TYPE_DOC,
...@@ -118,7 +126,13 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> { ...@@ -118,7 +126,13 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> {
MIME_TYPE_PPTX, MIME_TYPE_PPTX,
) )
val list = context.getMediaFile(selectionArgs = selectionArgs) val list = context.getMediaFile(selectionArgs = selectionArgs).filter {
if (context.checkStorePermission()) {
true
} else {
!Uri.EMPTY.equals(it.uri)
}
}
val documentList = list.map { val documentList = list.map {
val documentBean = DocumentBean(it.path, uri = it.uri, type = getDocumentType(it)) val documentBean = DocumentBean(it.path, uri = it.uri, type = getDocumentType(it))
if (documentBean.type == TYPE_PDF) { if (documentBean.type == TYPE_PDF) {
...@@ -126,23 +140,32 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> { ...@@ -126,23 +140,32 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> {
} }
documentBean documentBean
} }
LogEx.logDebug("getAllDocument", "documentList size=${documentList.size}")
documentList.forEach { document ->
LogEx.logDebug("getAllDocument", "document=$document")
}
val new = documentList.toMutableList() val new = documentList.toMutableList()
val pptDemo = getPPtDemo(context) val pptDemo = getPPtDemo()
if (File(pptDemo.path).exists()) { if (File(pptDemo.path).exists()) {
new.add(0, pptDemo) new.add(0, pptDemo)
} }
val excelDemo = getExcelDemo(context) val excelDemo = getExcelDemo()
if (File(excelDemo.path).exists()) { if (File(excelDemo.path).exists()) {
new.add(0, excelDemo) new.add(0, excelDemo)
} }
val wordDemp = getWordDemo(context) val wordDemo = getWordDemo()
if (File(wordDemp.path).exists()) { if (File(wordDemo.path).exists()) {
new.add(0, wordDemp) new.add(0, wordDemo)
} }
val pdfDemo = getPdfDemo(context) val pdfDemo = getPdfDemo(context)
if (File(pdfDemo.path).exists()) { if (File(pdfDemo.path).exists()) {
new.add(0, pdfDemo) new.add(0, pdfDemo)
} }
// new.forEach { document ->
// LogEx.logDebug("getAllDocument", "document=$document")
// }
return new return new
} }
...@@ -150,12 +173,20 @@ fun getPdfFastSize(context: Context): Int { ...@@ -150,12 +173,20 @@ fun getPdfFastSize(context: Context): Int {
val selectionArgs = arrayOf( val selectionArgs = arrayOf(
MIME_TYPE_PDF MIME_TYPE_PDF
) )
val list = context.getMediaFile(selectionArgs = selectionArgs) val list = context.getMediaFile(selectionArgs = selectionArgs).filter {
if (context.checkStorePermission()) {
true
} else {
it.uri.toString().isNotEmpty()
}
}
var size = list.size var size = list.size
if (context.checkStorePermission()) {
val pdfDemo = getPdfDemo(context) val pdfDemo = getPdfDemo(context)
if (File(pdfDemo.path).exists()) { if (File(pdfDemo.path).exists()) {
size += 1 size += 1
} }
}
return size return size
} }
...@@ -173,11 +204,14 @@ fun getPdfDocument(context: Context): MutableList<DocumentBean> { ...@@ -173,11 +204,14 @@ fun getPdfDocument(context: Context): MutableList<DocumentBean> {
context.pdfCheck(demoDocumentBean) context.pdfCheck(demoDocumentBean)
demoDocumentBean demoDocumentBean
} }
val new = documentList.toMutableList() var new = if (context.checkStorePermission()) documentList else documentList.filter { it.uri != null }
new = new.toMutableList()
if (context.checkStorePermission()) {
val pdfDemo = getPdfDemo(context) val pdfDemo = getPdfDemo(context)
if (File(pdfDemo.path).exists()) { if (File(pdfDemo.path).exists()) {
new.add(0, pdfDemo) new.add(0, pdfDemo)
} }
}
return new return new
} }
...@@ -194,11 +228,14 @@ fun getWordDocument(context: Context): MutableList<DocumentBean> { ...@@ -194,11 +228,14 @@ fun getWordDocument(context: Context): MutableList<DocumentBean> {
val documentList = list.map { val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_WORD) DocumentBean(it.path, uri = it.uri, type = TYPE_WORD)
} }
val new = documentList.toMutableList() var new = if (context.checkStorePermission()) documentList else documentList.filter { it.uri == null }
val wordDemo = getWordDemo(context) new = new.toMutableList()
if (context.checkStorePermission()) {
val wordDemo = getWordDemo()
if (File(wordDemo.path).exists()) { if (File(wordDemo.path).exists()) {
new.add(0, wordDemo) new.add(0, wordDemo)
} }
}
return new return new
} }
...@@ -215,11 +252,14 @@ fun getExcelDocument(context: Context): MutableList<DocumentBean> { ...@@ -215,11 +252,14 @@ fun getExcelDocument(context: Context): MutableList<DocumentBean> {
val documentList = list.map { val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_EXCEL) DocumentBean(it.path, uri = it.uri, type = TYPE_EXCEL)
} }
val new = documentList.toMutableList() var new = if (context.checkStorePermission()) documentList else documentList.filter { it.uri == null }
val excelDemo = getExcelDemo(context) new = new.toMutableList()
if (context.checkStorePermission()) {
val excelDemo = getExcelDemo()
if (File(excelDemo.path).exists()) { if (File(excelDemo.path).exists()) {
new.add(0, excelDemo) new.add(0, excelDemo)
} }
}
return new return new
} }
...@@ -236,15 +276,17 @@ fun getPptDocument(context: Context): MutableList<DocumentBean> { ...@@ -236,15 +276,17 @@ fun getPptDocument(context: Context): MutableList<DocumentBean> {
val documentList = list.map { val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_PPT) DocumentBean(it.path, uri = it.uri, type = TYPE_PPT)
} }
val new = documentList.toMutableList() var new = if (context.checkStorePermission()) documentList else documentList.filter { it.uri == null }
val pptDemo = getPPtDemo(context) new = new.toMutableList()
if (context.checkStorePermission()) {
val pptDemo = getPPtDemo()
if (File(pptDemo.path).exists()) { if (File(pptDemo.path).exists()) {
new.add(0, pptDemo) new.add(0, pptDemo)
} }
}
return new return new
} }
fun recentFilter(recentList: List<String>, documentBean: DocumentBean) { fun recentFilter(recentList: List<String>, documentBean: DocumentBean) {
val findLastTime = recentList.filter { it.contains(documentBean.path) }.map { val findLastTime = recentList.filter { it.contains(documentBean.path) }.map {
it.split("_/_")[1].toLong() it.split("_/_")[1].toLong()
...@@ -280,3 +322,4 @@ fun saveBookmarkChange(addRemove: Boolean, path: String) { ...@@ -280,3 +322,4 @@ fun saveBookmarkChange(addRemove: Boolean, path: String) {
SpStringUtils.deleteSpString(BOOKMARK_KEY, path) SpStringUtils.deleteSpString(BOOKMARK_KEY, path)
} }
} }
...@@ -32,7 +32,6 @@ import com.base.pdfreaderallpdfreader.helper.ConfigHelper ...@@ -32,7 +32,6 @@ import com.base.pdfreaderallpdfreader.helper.ConfigHelper
import com.base.pdfreaderallpdfreader.ui.feedback.FeedbackActivity import com.base.pdfreaderallpdfreader.ui.feedback.FeedbackActivity
import com.base.pdfreaderallpdfreader.ui.language.LanguageActivity import com.base.pdfreaderallpdfreader.ui.language.LanguageActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity 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.showAppExitDialog
import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showNotificationDialog import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showNotificationDialog
import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showStoragePermission import com.base.pdfreaderallpdfreader.ui.view.MainDialog.showStoragePermission
...@@ -100,9 +99,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -100,9 +99,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.includeMain.tvTittle.text = spannableString binding.includeMain.tvTittle.text = spannableString
binding.tvPdfReader.text = spannableString binding.tvPdfReader.text = spannableString
if (!checkStorePermission()) { if (checkStorePermission()) {
showStoragePermission(launcher)
} else {
val flag = checkNotificationPermission() val flag = checkNotificationPermission()
LogEx.logDebug(TAG, "checkNotificationPermission flag=$flag") LogEx.logDebug(TAG, "checkNotificationPermission flag=$flag")
if (!flag) { if (!flag) {
...@@ -115,16 +112,20 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -115,16 +112,20 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
} }
addDeskShortCut() addDeskShortCut()
} }
private var jumpPermission: Boolean = false
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
LogEx.logDebug(TAG, "onResume")
if (checkStorePermission()) { if (checkStorePermission()) {
if (!jumpPermission) {
showMainBanner() showMainBanner()
} }
jumpPermission = false
} else {
showStoragePermission(launcher, jumpAction = { jumpPermission = true })
}
} }
override fun initListener() { override fun initListener() {
...@@ -152,21 +153,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -152,21 +153,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
startActivity(Intent(this, LanguageActivity::class.java)) startActivity(Intent(this, LanguageActivity::class.java))
} }
binding.includeMain.includeContentMain.ivScan.setOnClickListener { binding.includeMain.includeContentMain.ivScan.setOnClickListener {
if (checkStorePermission()) {
starAdGmsScan()
} else {
showStoragePermission(launcher) showStoragePermission(launcher)
} }
}
binding.includeMain.ivSearch.setOnClickListener { binding.includeMain.ivSearch.setOnClickListener {
if (checkStorePermission()) {
startActivity(Intent(this, SearchActivity::class.java))
} else {
showStoragePermission(launcher) showStoragePermission(launcher)
} }
}
binding.llFileManager.setOnClickListener { binding.llFileManager.setOnClickListener {
if (checkStorePermission()) {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT) val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
intent.addCategory(Intent.CATEGORY_OPENABLE) intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.setType("application/pdf") intent.setType("application/pdf")
...@@ -178,9 +170,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -178,9 +170,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
jumpUriPdf(uri) jumpUriPdf(uri)
} }
} }
} else {
showStoragePermission(launcher)
}
} }
binding.llRate.setOnClickListener { binding.llRate.setOnClickListener {
showRateDialog(true) showRateDialog(true)
...@@ -308,19 +297,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -308,19 +297,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private fun showMainBanner() { private fun showMainBanner() {
if (!bannerShowed) { if (!bannerShowed) {
bannerShowed = true bannerShowed = true
AdmobBannerUtils.showCollapsibleBannerAd(this, binding.includeMain.includeContentMain.flBanner) { LogEx.logDebug(TAG, "showMainBanner")
//通知弹窗 AdmobBannerUtils.showCollapsibleBannerAd(this, binding.includeMain.includeContentMain.flBanner) {}
// if (!todayShowNotificationDialog && !checkNotificationPermission()) {
// todayShowNotificationDialog = true
// showNotificationDialog(launcher)
// } else {
// if (!ConstObject.setDefault) {
// showDefaultBottomDialog()
// } else {
// showRateDialog()
// }
// }
}
} }
} }
......
...@@ -17,7 +17,6 @@ import com.base.pdfreaderallpdfreader.ui.document.DocumentActivity ...@@ -17,7 +17,6 @@ import com.base.pdfreaderallpdfreader.ui.document.DocumentActivity
import com.base.pdfreaderallpdfreader.ui.main.MainActivity import com.base.pdfreaderallpdfreader.ui.main.MainActivity
import com.base.pdfreaderallpdfreader.ui.main.getPdfFastSize import com.base.pdfreaderallpdfreader.ui.main.getPdfFastSize
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfSelectActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfSelectActivity.Companion.jumpPdfSelect import com.base.pdfreaderallpdfreader.ui.pdf.PdfSelectActivity.Companion.jumpPdfSelect
import com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission import com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
......
...@@ -51,6 +51,9 @@ import kotlinx.coroutines.delay ...@@ -51,6 +51,9 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.File import java.io.File
/**
* 经过测试没有权限即使内部储存的文件也会打开失败
*/
class PdfActivity : BaseActivity<ActivityPdfBinding>() { class PdfActivity : BaseActivity<ActivityPdfBinding>() {
private val TAG = "PdfActivity" private val TAG = "PdfActivity"
......
...@@ -31,7 +31,7 @@ object MainDialog { ...@@ -31,7 +31,7 @@ object MainDialog {
fun Context.showStoragePermission( fun Context.showStoragePermission(
launcher: ActivityLauncher, launcher: ActivityLauncher,
launcherAction: ((flag: Boolean) -> Unit)? = null, launcherAction: ((flag: Boolean) -> Unit)? = null,
noLauncherAction: (() -> Unit)? = null, jumpAction: (() -> Unit)? = null,
dismissAction: (() -> Unit)? = null, dismissAction: (() -> Unit)? = null,
): BottomSheetDialog { ): BottomSheetDialog {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog) val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
...@@ -48,6 +48,7 @@ object MainDialog { ...@@ -48,6 +48,7 @@ object MainDialog {
binding.tvAllow.setOnClickListener { binding.tvAllow.setOnClickListener {
dialog.dismiss() dialog.dismiss()
jumpAction?.invoke()
requestStoragePermission(launcher) { requestStoragePermission(launcher) {
launcherAction?.invoke(it) launcherAction?.invoke(it)
} }
......
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