Commit c2cc9958 authored by wanglei's avatar wanglei

...

parent b2917ad3
......@@ -45,6 +45,7 @@
</activity>
<activity
android:name=".ui.main.MainActivity"
android:configChanges="locale"
android:exported="false"
android:launchMode="singleTask"
android:screenOrientation="portrait"
......
......@@ -43,6 +43,9 @@ object ConstObject {
const val NOTIFICATION_ACTION_LOG = "notification_action_log"
const val NOTIFICATION_ACTION_DOCUMENT = "notification_action_document"
const val NOTIFICATION_ACTION_BOOKMARK = "notification_action_bookmark"
const val SHORTCUT_SCAN_PDF = "shortcut_scan_pdf"
const val SHORTCUT_SPLIT_PDF = "shortcut_split_pdf"
const val SHORTCUT_MERGE_PDF = "shortcut_merge_pdf"
var ifAgreePrivacy = false
get() {
......
......@@ -11,6 +11,7 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.changeLanguageSp
import com.base.pdfviewerscannerwhite.ui.main.MainActivity
import com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import com.base.pdfviewerscannerwhite.utils.ActivityManagerUtils
import com.base.pdfviewerscannerwhite.utils.LanguageUtils.changeAppLanguage
import com.base.pdfviewerscannerwhite.utils.LogEx
import java.util.Locale
......@@ -74,14 +75,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
)
if (appLanguageSp != changeLanguageSp || activityLanguage != appLanguageSp) {
val config = resources.configuration
val locale = Locale(changeLanguageSp)
//Android 7.0以上的方法
config.setLocale(locale);
config.setLocales(LocaleList(locale));
createConfigurationContext(config);
resources.updateConfiguration(config, resources.displayMetrics)
changeAppLanguage(this)
// Restart the app
appLanguageSp = changeLanguageSp
......
......@@ -6,12 +6,10 @@ import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.LanguageBean
import com.base.pdfviewerscannerwhite.fcm.FCMManager
import com.base.pdfviewerscannerwhite.ui.splash.SplashActivity
import com.base.pdfviewerscannerwhite.utils.ActivityManagerUtils
import com.base.pdfviewerscannerwhite.utils.AppPreferences
import com.base.pdfviewerscannerwhite.utils.LanguageUtils.getSystemLanguage
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.facebook.FacebookSdk
import com.tom_roush.pdfbox.android.PDFBoxResourceLoader
......@@ -38,6 +36,7 @@ class MyApplication : Application() {
var pdfSplitLanguage: String = Locale.ENGLISH.language
var wordLanguage: String = Locale.ENGLISH.language
var umpCanAd: Boolean = true
@JvmField
......@@ -50,37 +49,25 @@ class MyApplication : Application() {
context = this
initUUid()
initApp()
initSystemLanguage()
initActivityLanguage()
PDFBoxResourceLoader.init(applicationContext)
}
private fun initSystemLanguage() {
val systemLanguage = getSystemLanguage()
val supportLanguage = listOf(
Locale.ENGLISH.language,
Locale.PRC.language,
Locale("pt", "BR").language,
Locale("es").language,
Locale.FRENCH.language,
Locale("de").language,
Locale("th", "TH").language,
Locale("in", "ID").language,
Locale("ms", "MY").language,
Locale("vi", "VN").language,
Locale("ja", "JP").language,
Locale("it", "IT").language,
Locale("ko", "KR").language,
Locale("nl", "NL").language,
Locale("zh", "TW").language,
Locale("tr", "TR").language
)
if (supportLanguage.contains(systemLanguage) && ConstObject.appLanguageSp != systemLanguage) {
LogEx.logDebug(TAG, "initSystemLanguage systemLanguage=$systemLanguage")
ConstObject.changeLanguageSp = systemLanguage
}
fun initActivityLanguage() {
splashLanguage = ConstObject.appLanguageSp
mainLanguage = ConstObject.appLanguageSp
setLanguage = ConstObject.appLanguageSp
feedbackLanguage = ConstObject.appLanguageSp
pptLanguage = ConstObject.appLanguageSp
pdfLanguage = ConstObject.appLanguageSp
pdfLoadingLanguage = ConstObject.appLanguageSp
pdfMergeLanguage = ConstObject.appLanguageSp
pdfSelectLanguage = ConstObject.appLanguageSp
pdfSplitLanguage = ConstObject.appLanguageSp
wordLanguage = ConstObject.appLanguageSp
}
private fun initUUid() {
uuid = AppPreferences.getInstance().getString("uuid", "")
if (TextUtils.isEmpty(uuid)) {
......
......@@ -15,12 +15,16 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.SHORTCUT_MERGE_PDF
import com.base.pdfviewerscannerwhite.bean.ConstObject.SHORTCUT_SCAN_PDF
import com.base.pdfviewerscannerwhite.bean.ConstObject.SHORTCUT_SPLIT_PDF
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityMain2Binding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.helper.MyApplication
import com.base.pdfviewerscannerwhite.ui.document.excel.ExcelActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
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
......@@ -31,6 +35,7 @@ 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.ShortcutUtils.addDeskShortCut
import com.base.pdfviewerscannerwhite.utils.updateMediaStore
import java.io.File
......@@ -53,14 +58,23 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
private val toolFragment: Fragment by lazy {
ToolFragment()
}
private var actionId: String = ""
private var currentFragment: Fragment = documentFragment
override fun initView() {
LogEx.logDebug(TAG, "initView")
actionId = intent.extras?.getString("actionId") ?: ""
LogEx.logDebug(TAG, "initView actionId=$actionId", true)
mainPresenter = MainPresenter(this, this, lifecycleScope)
mainPresenter.initScannerLauncher(this)
addDeskShortCut()
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
actionId = intent?.extras?.getString("actionId") ?: ""
LogEx.logDebug(TAG, "onNewIntent actionId=$actionId", true)
actionIdOperation()
}
override fun onResume() {
......@@ -92,7 +106,6 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
LogEx.logDebug(TAG, "onSaveInstanceState")
}
var isDocumentAdd: Boolean = false
......@@ -215,6 +228,23 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
mainPresenter.starGmsScan(this)
}
actionIdOperation()
}
private fun actionIdOperation() {
if (actionId == SHORTCUT_SCAN_PDF) {
mainPresenter.starGmsScan(this)
}
if (actionId == SHORTCUT_SPLIT_PDF) {
startActivity(Intent(this, PdfSelectActivity::class.java).apply {
putExtra("doWhat", ConstObject.DO_SPLIT_PDF)
})
}
if (actionId == SHORTCUT_MERGE_PDF) {
startActivity(Intent(this, PdfSelectActivity::class.java).apply {
putExtra("doWhat", ConstObject.DO_MERGE_PDF)
})
}
}
private fun shareDocument() {
......
......@@ -8,7 +8,12 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.changeLanguageSp
import com.base.pdfviewerscannerwhite.bean.LanguageBean
import com.base.pdfviewerscannerwhite.databinding.ActivitySetLanguageBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.helper.MyApplication
import com.base.pdfviewerscannerwhite.utils.LanguageUtils
import com.base.pdfviewerscannerwhite.utils.LanguageUtils.changeAppLanguage
import com.base.pdfviewerscannerwhite.utils.LanguageUtils.getSystemLanguageDefault
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.cherry.lib.doc.office.fc.hssf.formula.function.IfFunc
import java.util.Locale
class SetLanguageActivity : BaseActivity<ActivitySetLanguageBinding>() {
......@@ -16,6 +21,7 @@ class SetLanguageActivity : BaseActivity<ActivitySetLanguageBinding>() {
override val binding: ActivitySetLanguageBinding by lazy {
ActivitySetLanguageBinding.inflate(layoutInflater)
}
private val TAG = ""
private lateinit var adapter: LanguageAdapter
private var from: String = ""
override fun initView() {
......@@ -24,6 +30,12 @@ class SetLanguageActivity : BaseActivity<ActivitySetLanguageBinding>() {
adapter = LanguageAdapter()
binding.rv.adapter = adapter
val systemLanguage = LanguageUtils.getSystemLanguage()
if (MyApplication.setLanguage != systemLanguage && LanguageUtils.isSupportSystemLanguage()) {
ConstObject.changeLanguageSp = systemLanguage
changeAppLanguage(this)
recreate()
}
initData()
}
......@@ -51,6 +63,7 @@ class SetLanguageActivity : BaseActivity<ActivitySetLanguageBinding>() {
}
}
private fun initData() {
val list = listOf(
LanguageBean(this.getString(R.string.follow_system), getSystemLanguageDefault()).apply { isFollowSystem = true },
......
......@@ -12,6 +12,7 @@ import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.ads.AdmobHelper.initAdmobAd
import com.base.pdfviewerscannerwhite.ads.admob.AdmobOpenUtils
import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.ConstObject.SHORTCUT_SCAN_PDF
import com.base.pdfviewerscannerwhite.bean.ConstObject.haveSelectLanguage
import com.base.pdfviewerscannerwhite.bean.ConstObject.ifAgreePrivacy
import com.base.pdfviewerscannerwhite.databinding.ActivitySplash2Binding
......@@ -26,7 +27,6 @@ import com.base.pdfviewerscannerwhite.utils.LogEx
import com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import com.base.pdfviewerscannerwhite.utils.UmpUtils
import com.base.pdfviewerscannerwhite.utils.UmpUtils.requestUMP
import com.cherry.lib.doc.office.system.IFind
import java.util.Calendar
import java.util.Locale
import java.util.concurrent.atomic.AtomicBoolean
......@@ -41,12 +41,14 @@ class SplashActivity : BaseActivity<ActivitySplash2Binding>(), SplashView {
override val binding: ActivitySplash2Binding by lazy {
ActivitySplash2Binding.inflate(layoutInflater)
}
private var actionId = ""
@SuppressLint("SetTextI18n")
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
if (Build.VERSION.SDK_INT >= 33) {
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}.launch(
......@@ -56,6 +58,10 @@ class SplashActivity : BaseActivity<ActivitySplash2Binding>(), SplashView {
splashPresenter = SplashPresenter(this)
startStayNotification()
actionId = intent.extras?.getString("actionId") ?: ""
LogEx.logDebug(TAG, "actionId=$actionId")
// 获取当前日期
val calendar: Calendar = Calendar.getInstance()
val month: Int = calendar.get(Calendar.MONTH)
......@@ -100,7 +106,6 @@ class SplashActivity : BaseActivity<ActivitySplash2Binding>(), SplashView {
}
ifAgreePrivacy = true
if (ifAgreePrivacy) {
if (isHotLaunch) {
agreePrivacy()
} else {
......@@ -170,18 +175,24 @@ class SplashActivity : BaseActivity<ActivitySplash2Binding>(), SplashView {
binding.progressBar.progress = 100
binding.root.postDelayed({
if (!haveSelectLanguage && ConstObject.changeLanguageSp != Locale.ENGLISH.language) {
startActivity(Intent(this, SetLanguageActivity::class.java))
finish()
return@postDelayed
}
val actionId = intent.extras?.getString("actionId")
startActivity(Intent(this, MainActivity::class.java).apply {
putExtra("actionId", actionId)
})
LogEx.logDebug(TAG, "jumpNext actionId=$actionId")
when (actionId) {
else -> {
startActivity(Intent(this, MainActivity::class.java).apply {
putExtra("actionId", actionId)
})
}
}
this.intent.extras?.clear()
finish()
intent.extras?.clear()
}, 100)
}
......
package com.base.pdfviewerscannerwhite.utils
import android.content.Context
import android.os.LocaleList
import com.base.pdfviewerscannerwhite.bean.ConstObject
import java.util.Locale
object LanguageUtils {
......@@ -9,25 +11,26 @@ object LanguageUtils {
return Locale.getDefault().language
}
val supportLanguage = listOf(
Locale.ENGLISH.language,
Locale.PRC.language,
Locale("pt", "BR").language,
Locale("es").language,
Locale.FRENCH.language,
Locale("de").language,
Locale("th", "TH").language,
Locale("in", "ID").language,
Locale("ms", "MY").language,
Locale("vi", "VN").language,
Locale("ja", "JP").language,
Locale("it", "IT").language,
Locale("ko", "KR").language,
Locale("nl", "NL").language,
Locale("zh", "TW").language,
Locale("tr", "TR").language
)
fun getSystemLanguageDefault(): String {
val supportLanguage = listOf(
Locale.ENGLISH.language,
Locale.PRC.language,
Locale("pt", "BR").language,
Locale("es").language,
Locale.FRENCH.language,
Locale("de").language,
Locale("th", "TH").language,
Locale("in", "ID").language,
Locale("ms", "MY").language,
Locale("vi", "VN").language,
Locale("ja", "JP").language,
Locale("it", "IT").language,
Locale("ko", "KR").language,
Locale("nl", "NL").language,
Locale("zh", "TW").language,
Locale("tr", "TR").language
)
var systemLanguage = getSystemLanguage()
if (!supportLanguage.contains(systemLanguage)) {
systemLanguage = Locale.ENGLISH.language
......@@ -35,4 +38,19 @@ object LanguageUtils {
return systemLanguage
}
fun isSupportSystemLanguage(): Boolean {
return supportLanguage.contains(getSystemLanguage())
}
fun changeAppLanguage(context: Context) {
val config = context.resources.configuration
val locale = Locale(ConstObject.changeLanguageSp)
//Android 7.0以上的方法
config.setLocale(locale)
config.setLocales(LocaleList(locale));
context.createConfigurationContext(config);
context.resources.updateConfiguration(config, context.resources.displayMetrics)
}
}
\ No newline at end of file
package com.base.pdfviewerscannerwhite.utils
import android.content.Context
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.os.Build
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.ui.splash.SplashActivity
object ShortcutUtils {
fun Context.addDeskShortCut() {
//获取ShortcutManager对象
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
val shortcutManager: ShortcutManager = getSystemService(ShortcutManager::class.java) as ShortcutManager
val shortcut1 = ShortcutInfo.Builder(this, "11111")
.setShortLabel("Scan Pdf")
.setIcon(Icon.createWithResource(this, R.mipmap.scan_tool))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, SplashActivity::class.java).apply {
putExtra("actionId", ConstObject.SHORTCUT_SCAN_PDF)
})
.build()
val shortcut2 = ShortcutInfo.Builder(this, "22222")
.setShortLabel("Split Pdf")
.setIcon(Icon.createWithResource(this, R.mipmap.split))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, SplashActivity::class.java).apply {
putExtra("actionId", ConstObject.SHORTCUT_MERGE_PDF)
})
.build()
val shortcut3 = ShortcutInfo.Builder(this, "33333")
.setShortLabel("Merge Pdf")
.setIcon(Icon.createWithResource(this, R.mipmap.merge))
.setIntent(Intent(Intent.ACTION_MAIN, null, this, SplashActivity::class.java).apply {
putExtra("actionId", ConstObject.SHORTCUT_MERGE_PDF)
})
.build()
//setDynamicShortcuts()方法来设置快捷方式
shortcutManager.setDynamicShortcuts(listOf(shortcut1, shortcut2, shortcut3))
}
}
}
\ 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