Commit 011f5fc1 authored by wanglei's avatar wanglei

...

parent ca6be513
......@@ -52,11 +52,23 @@
<activity
android:name=".ui.main.MainActivity"
android:configChanges="locale"
android:exported="false"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<intent-filter tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/pdf" />
<data android:mimeType="application/msword" />
<data android:mimeType="application/vnd.ms-excel" />
<data android:mimeType="application/vnd.ms-powerpoint" />
</intent-filter>
</activity>
<activity
android:name=".ui.set.SetLanguageActivity"
......
......@@ -144,6 +144,14 @@ object ConstObject {
field = value
AppPreferences.getInstance().put("todayShowNotificationDialog_${currentDate()}", value, true)
}
var setDefault = false
get() {
return AppPreferences.getInstance().getBoolean("setDefault", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("setDefault", value, true)
}
private fun currentDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
......
package com.base.pdfviewerscannerwhite.fcm
import com.base.pdfviewerscannerwhite.utils.AppPreferences
object PopupConstObject {
const val POPUP_WHERE_TIMBER = "Timber"
......@@ -19,6 +21,15 @@ object PopupConstObject {
val popup_lock_interval = "popup_lock_interval"
val popup_fcm_interval = "popup_fcm_interval"
var topic_number = ""
get() {
return AppPreferences.getInstance().getString("topic_number", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("topic_number", value, true)
}
//推送样式一配置
val popup_style1_start = "popup_style1_start"
val popup_style1_end = "popup_style1_end"
......
......@@ -6,10 +6,13 @@ import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import com.base.pdfviewerscannerwhite.fcm.FCMManager
import com.base.pdfviewerscannerwhite.fcm.PopupConstObject.topic_number
import com.base.pdfviewerscannerwhite.fcm.ScreenStatusReceiver
import com.base.pdfviewerscannerwhite.ui.splash.SplashActivity
import com.base.pdfviewerscannerwhite.utils.ActivityManagerUtils
import com.base.pdfviewerscannerwhite.utils.AppPreferences
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatMinute
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime3
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.facebook.FacebookSdk
import com.tom_roush.pdfbox.android.PDFBoxResourceLoader
......@@ -64,7 +67,14 @@ class MyApplication : Application() {
fun initApp() {
FacebookSdk.sdkInitialize(applicationContext)
val topic = ConfigHelper.packageName + "_push"
var topicNumber = System.currentTimeMillis().toFormatMinute()
LogEx.logDebug(TAG, "topicNumber=$topicNumber")
if (topic_number.isNotEmpty()) {
topicNumber = topic_number
} else {
topic_number = topicNumber
}
val topic = ConfigHelper.packageName + "_push_$topicNumber"
LogEx.logDebug(TAG, "topic=${topic}")
FCMManager.initFirebase(this)
FCMManager.subscribeToTopic(topic)
......
......@@ -33,6 +33,7 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSelectActivity
import com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showAppExitDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDefaultBottomDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showNotificationDialog
......@@ -41,7 +42,6 @@ import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import com.base.pdfviewerscannerwhite.utils.RoleManagerUtils.requestRoleBrowser
import com.base.pdfviewerscannerwhite.utils.ShortcutUtils.addDeskShortCut
import com.base.pdfviewerscannerwhite.utils.updateMediaStore
import java.io.File
......@@ -79,7 +79,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
addDeskShortCut()
requestRoleBrowser(launcher)
}
......@@ -189,6 +189,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
if (!todayShowNotificationDialog) {
todayShowNotificationDialog = true
showNotificationDialog(launcher)
} else {
}
}
}
......@@ -215,6 +216,8 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
if (!todayShowNotificationDialog) {
todayShowNotificationDialog = true
showNotificationDialog(launcher)
} else {
showDefaultBottomDialog()
}
}
}
......
......@@ -5,8 +5,14 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.service.chooser.ChooserAction
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
......@@ -14,6 +20,8 @@ import android.view.WindowManager
import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.LinearLayout.LayoutParams
import androidx.core.app.ActivityCompat.startActivityForResult
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.ads.admob.AdmobNativeUtils
......@@ -21,13 +29,15 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_SORT_FINAL_MODIFIED
import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_SORT_LAST_MODIFIED
import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_SORT_NAME_A_Z
import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_SORT_NAME_Z_A
import com.base.pdfviewerscannerwhite.bean.ConstObject.setDefault
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfviewerscannerwhite.databinding.DialogAppExitBinding
import com.base.pdfviewerscannerwhite.databinding.DialogCommonTipBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDefaultBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDefaultBottomBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDefaultUpBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDeleteBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDocumentDetailBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDocumentHomeMoreBinding
......@@ -40,6 +50,7 @@ import com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding
import com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment
import com.base.pdfviewerscannerwhite.ui.main.MainActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showNotificationDialog
import com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import com.base.pdfviewerscannerwhite.utils.IntentShareUtils.documentShare
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
......@@ -520,9 +531,12 @@ object DialogView {
}
@SuppressLint("SetTextI18n")
fun Context.showDefaultDialog() {
fun Activity.showDefaultBottomDialog() {
if (setDefault) return
setDefault = true
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogDefaultBinding.inflate(LayoutInflater.from(this))
val binding = DialogDefaultBottomBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(false)
......@@ -538,11 +552,82 @@ object DialogView {
val appName = resources.getString(R.string.app_name)
binding.tvTittle.text = getString(R.string.set_as_default) + appName
binding.tvTittle.text = getString(R.string.set_as_default) + " " + appName
binding.tvDesc.text =
getString(R.string.set_this_app_as_your_default) + appName + getString(R.string.for_a_better_reading_experience)
getString(R.string.set_this_app_as_your_default) + " " + appName + " " + getString(R.string.for_a_better_reading_experience)
binding.tvConfirm.setOnClickListener {
dialog.dismiss()
showDefaultTopDialog()
}
}
fun Activity.showDefaultTopDialog() {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogDefaultUpBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
binding.tvConfirm
val params = dialog.window?.attributes
// params?.width = resources.getDimensionPixelOffset(R.dimen.dp_345)
// params?.height = LinearLayout.LayoutParams.WRAP_CONTENT
params?.gravity = Gravity.TOP
dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
val select = getString(R.string.select)
val spannableStringBuilder = SpannableStringBuilder()
spannableStringBuilder.append(select)
spannableStringBuilder.append(" ")
val app = getString(R.string.app_name)
val appString = SpannableString(app)
appString.setSpan(
ForegroundColorSpan(ContextCompat.getColor(this, R.color.colo_00b8de)),
0,
appString.length,
SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannableStringBuilder.append(appString)
val andClick = getString(R.string._and_click)
spannableStringBuilder.append(andClick)
spannableStringBuilder.append(" ")
val always = getString(R.string.always)
val alwaysString = SpannableString(always)
alwaysString.setSpan(
ForegroundColorSpan(ContextCompat.getColor(this, R.color.colo_00b8de)),
0,
always.length,
SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannableStringBuilder.append(alwaysString)
spannableStringBuilder.append(" ")
val ss = getString(R.string.as_the_default_reader)
spannableStringBuilder.append(ss)
binding.tvTittle.text = spannableStringBuilder
binding.tvOk.setOnClickListener {
dialog.dismiss()
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse(""), "application/pdf")
intent.addCategory(Intent.CATEGORY_DEFAULT)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val chooser: Intent = Intent.createChooser(intent, null)
if (intent.resolveActivity(packageManager) != null) {
startActivityForResult(chooser, 111)
}
}
}
}
\ No newline at end of file
......@@ -45,6 +45,10 @@ object KotlinExt {
return SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).format(this)
}
fun Long.toFormatMinute(): String {
return SimpleDateFormat("mm", Locale.ENGLISH).format(this)
}
fun Array<String>.array2String(): String {
val stringBuilder = StringBuilder()
......
......@@ -14,33 +14,33 @@ object RoleManagerUtils {
// return resolveInfo != null && resolveInfo.activityInfo.packageName == packageName
// }
fun Context.requestRoleBrowser(launcher: ActivityLauncher, callBack: (() -> Unit)? = null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val roleManager: RoleManager = getSystemService(RoleManager::class.java) as RoleManager
if (!roleManager.isRoleAvailable("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
launcher.launch(intent) {
callBack?.invoke()
}
} else if (roleManager.isRoleHeld("android.app.role.BROWSER")) {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
launcher.launch(intent) {
callBack?.invoke()
}
} else {
val intent = roleManager.createRequestRoleIntent("android.app.role.BROWSER")
launcher.launch(intent) {
callBack?.invoke()
}
}
} else {
val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
launcher.launch(intent) {
callBack?.invoke()
}
}
}
// fun Context.requestRoleBrowser(launcher: ActivityLauncher, callBack: (() -> Unit)? = null) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// val roleManager: RoleManager = getSystemService(RoleManager::class.java) as RoleManager
// if (!roleManager.isRoleAvailable("android.app.role.BROWSER")) {
// val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
// launcher.launch(intent) {
// callBack?.invoke()
// }
// } else if (roleManager.isRoleHeld("android.app.role.BROWSER")) {
// val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
// launcher.launch(intent) {
// callBack?.invoke()
// }
// } else {
// val intent = roleManager.createRequestRoleIntent("android.app.role.BROWSER")
// launcher.launch(intent) {
// callBack?.invoke()
// }
// }
//
// } else {
// val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
// launcher.launch(intent) {
// callBack?.invoke()
// }
// }
// }
}
\ 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="@color/white" />
<corners
android:bottomLeftRadius="25dp"
android:bottomRightRadius="25dp" />
</shape>
\ No newline at end of file
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_tlf25"
android:background="@drawable/bg_ffffff_tlr25"
android:orientation="vertical">
......
......@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_tlf25"
android:background="@drawable/bg_ffffff_tlr25"
android:orientation="vertical">
<View
......@@ -38,6 +38,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:textColor="#666666"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_blr25"
android:orientation="vertical">
<TextView
android:layout_marginHorizontal="24dp"
android:id="@+id/tv_tittle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:textColor="#333333"
android:textSize="17sp"
android:textStyle="bold"
tools:ignore="HardcodedText"
tools:text="@string/app_name" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:src="@mipmap/shezhitu_10"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_ok"
android:layout_width="338dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_00b8de_10"
android:gravity="center"
android:text="ok"
android:textColor="@color/white"
android:textSize="18sp"
tools:ignore="HardcodedText" />
</LinearLayout>
\ No newline at end of file
......@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_tlf25"
android:background="@drawable/bg_ffffff_tlr25"
android:orientation="vertical">
<ImageView
......
......@@ -7,4 +7,5 @@
<color name="color_149b55">#149B55</color>
<color name="color_ffa127">#FFA127</color>
<color name="color_f92b39">#F92B39</color>
<color name="colo_00b8de">#00B8DE</color>
</resources>
\ No newline at end of file
......@@ -103,5 +103,9 @@
<string name="set_as_default">Set as Default </string>
<string name="set_this_app_as_your_default">Set this app as your default </string>
<string name="for_a_better_reading_experience">for a better reading experience</string>
<string name="select">Select </string>
<string name="_and_click">" and click"</string>
<string name="always">Always </string>
<string name="as_the_default_reader">It is set as the default reader.</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