Skip to content

Commit

Permalink
修复:重启手机自动启动APP时加载配置失败 #233 #245
Browse files Browse the repository at this point in the history
  • Loading branch information
pppscn committed Jan 28, 2023
1 parent 4d7146b commit 5f55d20
Show file tree
Hide file tree
Showing 32 changed files with 3,590 additions and 4,521 deletions.
8 changes: 3 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,11 @@ dependencies {
implementation files('libs/frpclib.aar')

testImplementation deps.junit
androidTestImplementation 'androidx.test.ext:junit:1.1.4'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation deps.espresso.core

implementation 'androidx.core:core-ktx:1.9.0'
implementation "androidx.activity:activity-ktx:1.6.1"
implementation 'androidx.core:core-ktx:1.8.0'
implementation "androidx.activity:activity-ktx:1.5.1"
implementation "androidx.fragment:fragment-ktx:1.5.4"
implementation "androidx.cardview:cardview:1.0.0"
implementation 'androidx.appcompat:appcompat:1.5.1'
Expand All @@ -202,8 +202,6 @@ dependencies {
//WebView
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0'
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'//选填
//腾讯的键值对存储mmkv:https://github.com/Tencent/MMKV
implementation 'com.tencent:mmkv:1.2.15'
//屏幕适配AutoSize:https://github.com/JessYanCoding/AndroidAutoSize
implementation 'me.jessyan:autosize:1.2.1'
//umeng统计
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@
<application
android:name=".App"
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="true"
android:fullBackupContent="@xml/backup_descriptor"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
Expand Down Expand Up @@ -215,6 +217,7 @@

<receiver
android:name=".receiver.BootReceiver"
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="true"
android:exported="true"
tools:ignore="IntentFilterExportedReceiver">
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/com/idormy/sms/forwarder/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ class App : Application(), CactusCallback, Configuration.Provider by Core {
setChannelId(FRONT_CHANNEL_ID) //渠道Id
setChannelName(FRONT_CHANNEL_NAME) //渠道名
setTitle(getString(R.string.app_name))
setContent(SettingUtils.notifyContent.toString())
setContent(SettingUtils.notifyContent)
setSmallIcon(R.drawable.ic_forwarder)
setLargeIcon(R.mipmap.ic_launcher)
setPendingIntent(pendingIntent)
Expand Down Expand Up @@ -214,8 +214,10 @@ class App : Application(), CactusCallback, Configuration.Provider by Core {
*/
private fun initLibs() {
Core.init(this)
// 配置文件初始化
SharedPreference.init(applicationContext)
// 转发历史工具类初始化
HistoryUtils.init(this)
HistoryUtils.init(applicationContext)
// X系列基础库初始化
XBasicLibInit.init(this)
// 版本更新初始化
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.idormy.sms.forwarder.activity

import android.annotation.SuppressLint
import android.util.Log
import android.view.KeyEvent
import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.showPrivacyDialog
import com.idormy.sms.forwarder.utils.MMKVUtils
import com.idormy.sms.forwarder.utils.SettingUtils
import com.idormy.sms.forwarder.utils.SettingUtils.Companion.isAgreePrivacy
import com.idormy.sms.forwarder.utils.SettingUtils.Companion.isFirstOpen
import com.xuexiang.xui.utils.KeyboardUtils
import com.xuexiang.xui.widget.activity.BaseSplashActivity
import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction
Expand Down Expand Up @@ -38,12 +35,6 @@ class SplashActivity : BaseSplashActivity(), CancelAdapt {
* 启动页结束后的动作
*/
override fun onSplashFinished() {
if (isFirstOpen) {
isFirstOpen = false
Log.d(TAG, "从SP迁移数据")
MMKVUtils.importSharedPreferences(this)
}

if (isAgreePrivacy) {
whereToJump()
} else {
Expand Down
296 changes: 148 additions & 148 deletions app/src/main/java/com/idormy/sms/forwarder/fragment/AboutFragment.kt
Original file line number Diff line number Diff line change
@@ -1,149 +1,149 @@
package com.idormy.sms.forwarder.fragment

import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.core.BaseFragment
import com.idormy.sms.forwarder.core.webview.AgentWebActivity
import com.idormy.sms.forwarder.databinding.FragmentAboutBinding
import com.idormy.sms.forwarder.utils.CacheUtils
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.gotoProtocol
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewMarkdown
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewPicture
import com.idormy.sms.forwarder.utils.HistoryUtils
import com.idormy.sms.forwarder.utils.HttpServerUtils
import com.idormy.sms.forwarder.utils.XToastUtils
import com.idormy.sms.forwarder.utils.sdkinit.XUpdateInit
import com.xuexiang.xaop.annotation.SingleClick
import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xui.widget.textview.supertextview.SuperTextView
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.file.FileUtils
import frpclib.Frpclib
import java.io.File
import java.text.SimpleDateFormat
import java.util.*

@Page(name = "关于软件")
class AboutFragment : BaseFragment<FragmentAboutBinding?>(), SuperTextView.OnSuperTextViewClickListener {

override fun viewBindingInflate(
inflater: LayoutInflater,
container: ViewGroup,
): FragmentAboutBinding {
return FragmentAboutBinding.inflate(inflater, container, false)
}

override fun initTitle(): TitleBar? {
val titleBar = super.initTitle()!!.setImmersive(false)
titleBar.setTitle(R.string.menu_about)
return titleBar
}

/**
* 初始化控件
*/
override fun initViews() {
binding!!.menuVersion.setLeftString(String.format(resources.getString(R.string.about_app_version), AppUtils.getAppVersionName()))
binding!!.menuCache.setLeftString(String.format(resources.getString(R.string.about_cache_size), CacheUtils.getTotalCacheSize(requireContext())))

if (FileUtils.isFileExists(context?.filesDir?.absolutePath + "/libs/libgojni.so")) {
binding!!.menuFrpc.setLeftString(String.format(resources.getString(R.string.about_frpc_version), Frpclib.getVersion()))
binding!!.menuFrpc.visibility = View.VISIBLE
}

val dateFormat = SimpleDateFormat("yyyy", Locale.CHINA)
val currentYear = dateFormat.format(Date())
binding!!.copyright.text = java.lang.String.format(resources.getString(R.string.about_copyright), currentYear)
}

override fun initListeners() {
binding!!.btnUpdate.setOnClickListener {
XUpdateInit.checkUpdate(requireContext(), true)
}
binding!!.btnCache.setOnClickListener {
HistoryUtils.clear()
CacheUtils.clearAllCache(requireContext())
XToastUtils.success(R.string.about_cache_purged)
binding!!.menuCache.setLeftString(String.format(resources.getString(R.string.about_cache_size), CacheUtils.getTotalCacheSize(requireContext())))
}
binding!!.btnFrpc.setOnClickListener {
try {
val soFile = File(context?.filesDir?.absolutePath + "/libs/libgojni.so")
if (soFile.exists()) soFile.delete()
XToastUtils.success(R.string.about_frpc_deleted)

val intent: Intent? = context?.packageManager?.getLaunchIntentForPackage(context?.packageName.toString())
intent?.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)
android.os.Process.killProcess(android.os.Process.myPid()) //杀掉以前进程
} catch (e: Exception) {
e.printStackTrace()
XToastUtils.error(e.message.toString())
}
}
binding!!.btnGithub.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_project_github))
}
binding!!.btnGitee.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_project_gitee))
}
binding!!.btnAddQqGroup1.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_1))
}
binding!!.btnAddQqGroup2.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_2))
}
binding!!.btnAddQqGroup3.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_3))
}
binding!!.btnAddQqGroup4.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_4))
}
binding!!.btnAddQqGroup5.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_5))
}

binding!!.menuWechatMiniprogram.setOnSuperTextViewClickListener(this)
binding!!.menuDonation.setOnSuperTextViewClickListener(this)
binding!!.menuWecomGroup.setOnSuperTextViewClickListener(this)
binding!!.menuDingtalkGroup.setOnSuperTextViewClickListener(this)
binding!!.menuQqChannel.setOnSuperTextViewClickListener(this)
binding!!.menuUserProtocol.setOnSuperTextViewClickListener(this)
binding!!.menuPrivacyProtocol.setOnSuperTextViewClickListener(this)
}

@SingleClick
override fun onClick(v: SuperTextView) {
when (v.id) {
R.id.menu_donation -> {
previewMarkdown(this, getString(R.string.about_item_donation_link), getString(R.string.url_donation_link), false)
}
R.id.menu_wechat_miniprogram -> {
if (HttpServerUtils.safetyMeasures != 3) {
XToastUtils.error("微信小程序只支持SM4加密传输!请前往主动控制·服务端修改安全措施!")
//return
}
previewPicture(this, getString(R.string.url_wechat_miniprogram), null)
}
R.id.menu_wecom_group -> {
previewPicture(this, getString(R.string.url_wework_group), null)
}
R.id.menu_dingtalk_group -> {
previewPicture(this, getString(R.string.url_dingtalk_group), null)
}
R.id.menu_qq_channel -> {
AgentWebActivity.goWeb(context, getString(R.string.url_qq_channel))
}
R.id.menu_user_protocol -> {
gotoProtocol(this, isPrivacy = false, isImmersive = false)
}
R.id.menu_privacy_protocol -> {
gotoProtocol(this, isPrivacy = true, isImmersive = false)
}
}
}
package com.idormy.sms.forwarder.fragment

import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.core.BaseFragment
import com.idormy.sms.forwarder.core.webview.AgentWebActivity
import com.idormy.sms.forwarder.databinding.FragmentAboutBinding
import com.idormy.sms.forwarder.utils.CacheUtils
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.gotoProtocol
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewMarkdown
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewPicture
import com.idormy.sms.forwarder.utils.HistoryUtils
import com.idormy.sms.forwarder.utils.HttpServerUtils
import com.idormy.sms.forwarder.utils.XToastUtils
import com.idormy.sms.forwarder.utils.sdkinit.XUpdateInit
import com.xuexiang.xaop.annotation.SingleClick
import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xui.widget.textview.supertextview.SuperTextView
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.file.FileUtils
import frpclib.Frpclib
import java.io.File
import java.text.SimpleDateFormat
import java.util.*

@Page(name = "关于软件")
class AboutFragment : BaseFragment<FragmentAboutBinding?>(), SuperTextView.OnSuperTextViewClickListener {

override fun viewBindingInflate(
inflater: LayoutInflater,
container: ViewGroup,
): FragmentAboutBinding {
return FragmentAboutBinding.inflate(inflater, container, false)
}

override fun initTitle(): TitleBar? {
val titleBar = super.initTitle()!!.setImmersive(false)
titleBar.setTitle(R.string.menu_about)
return titleBar
}

/**
* 初始化控件
*/
override fun initViews() {
binding!!.menuVersion.setLeftString(String.format(resources.getString(R.string.about_app_version), AppUtils.getAppVersionName()))
binding!!.menuCache.setLeftString(String.format(resources.getString(R.string.about_cache_size), CacheUtils.getTotalCacheSize(requireContext())))

if (FileUtils.isFileExists(context?.filesDir?.absolutePath + "/libs/libgojni.so")) {
binding!!.menuFrpc.setLeftString(String.format(resources.getString(R.string.about_frpc_version), Frpclib.getVersion()))
binding!!.menuFrpc.visibility = View.VISIBLE
}

val dateFormat = SimpleDateFormat("yyyy", Locale.CHINA)
val currentYear = dateFormat.format(Date())
binding!!.copyright.text = java.lang.String.format(resources.getString(R.string.about_copyright), currentYear)
}

override fun initListeners() {
binding!!.btnUpdate.setOnClickListener {
XUpdateInit.checkUpdate(requireContext(), true)
}
binding!!.btnCache.setOnClickListener {
HistoryUtils.clearPreference()
CacheUtils.clearAllCache(requireContext())
XToastUtils.success(R.string.about_cache_purged)
binding!!.menuCache.setLeftString(String.format(resources.getString(R.string.about_cache_size), CacheUtils.getTotalCacheSize(requireContext())))
}
binding!!.btnFrpc.setOnClickListener {
try {
val soFile = File(context?.filesDir?.absolutePath + "/libs/libgojni.so")
if (soFile.exists()) soFile.delete()
XToastUtils.success(R.string.about_frpc_deleted)

val intent: Intent? = context?.packageManager?.getLaunchIntentForPackage(context?.packageName.toString())
intent?.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)
android.os.Process.killProcess(android.os.Process.myPid()) //杀掉以前进程
} catch (e: Exception) {
e.printStackTrace()
XToastUtils.error(e.message.toString())
}
}
binding!!.btnGithub.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_project_github))
}
binding!!.btnGitee.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_project_gitee))
}
binding!!.btnAddQqGroup1.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_1))
}
binding!!.btnAddQqGroup2.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_2))
}
binding!!.btnAddQqGroup3.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_3))
}
binding!!.btnAddQqGroup4.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_4))
}
binding!!.btnAddQqGroup5.setOnClickListener {
AgentWebActivity.goWeb(context, getString(R.string.url_add_qq_group_5))
}

binding!!.menuWechatMiniprogram.setOnSuperTextViewClickListener(this)
binding!!.menuDonation.setOnSuperTextViewClickListener(this)
binding!!.menuWecomGroup.setOnSuperTextViewClickListener(this)
binding!!.menuDingtalkGroup.setOnSuperTextViewClickListener(this)
binding!!.menuQqChannel.setOnSuperTextViewClickListener(this)
binding!!.menuUserProtocol.setOnSuperTextViewClickListener(this)
binding!!.menuPrivacyProtocol.setOnSuperTextViewClickListener(this)
}

@SingleClick
override fun onClick(v: SuperTextView) {
when (v.id) {
R.id.menu_donation -> {
previewMarkdown(this, getString(R.string.about_item_donation_link), getString(R.string.url_donation_link), false)
}
R.id.menu_wechat_miniprogram -> {
if (HttpServerUtils.safetyMeasures != 3) {
XToastUtils.error("微信小程序只支持SM4加密传输!请前往主动控制·服务端修改安全措施!")
//return
}
previewPicture(this, getString(R.string.url_wechat_miniprogram), null)
}
R.id.menu_wecom_group -> {
previewPicture(this, getString(R.string.url_wework_group), null)
}
R.id.menu_dingtalk_group -> {
previewPicture(this, getString(R.string.url_dingtalk_group), null)
}
R.id.menu_qq_channel -> {
AgentWebActivity.goWeb(context, getString(R.string.url_qq_channel))
}
R.id.menu_user_protocol -> {
gotoProtocol(this, isPrivacy = false, isImmersive = false)
}
R.id.menu_privacy_protocol -> {
gotoProtocol(this, isPrivacy = true, isImmersive = false)
}
}
}
}
Loading

0 comments on commit 5f55d20

Please sign in to comment.