From 8b37862121e35e59ffd02e12730270e23aba91c4 Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Sun, 2 Feb 2025 22:01:39 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=9C=AA=E6=8E=88?=
=?UTF-8?q?=E6=9D=83=E8=AE=BF=E9=97=AE=E5=BA=94=E7=94=A8=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E6=97=B6=E8=BF=9B=E5=85=A5=E5=BA=94=E7=94=A8=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8F=90=E7=A4=BA=20#577?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 2 +-
app/src/main/AndroidManifest.xml | 5 +-
.../sms/forwarder/activity/MainActivity.kt | 54 ++++++++-----------
.../sms/forwarder/fragment/AppListFragment.kt | 29 +++++++---
app/src/main/res/values-en/strings.xml | 1 +
app/src/main/res/values-zh-rCN/strings.xml | 1 +
app/src/main/res/values-zh-rTW/strings.xml | 1 +
app/src/main/res/values/strings.xml | 1 +
8 files changed, 50 insertions(+), 44 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 89bc4c73..c5548145 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -342,7 +342,7 @@ dependencies {
testImplementation "androidx.paging:paging-common-ktx:$paging_version"
//权限请求框架:https://github.com/getActivity/XXPermissions
- implementation 'com.github.getActivity:XXPermissions:18.62'
+ implementation 'com.github.getActivity:XXPermissions:20.0'
//语种切换框架:https://github.com/getActivity/MultiLanguages
implementation 'com.github.getActivity:MultiLanguages:b47f7be' //9.3
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a44321d0..13622162 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
android:name="android.hardware.telephony"
android:required="false" />
+
@@ -157,10 +158,6 @@
-
-
-
-
(), DrawerAdapter.OnItemS
private fun initSlidingMenu(savedInstanceState: Bundle?) {
mSlidingRootNav = SlidingRootNavBuilder(this).withGravity(if (ResUtils.isRtl(this)) SlideGravity.RIGHT else SlideGravity.LEFT).withMenuOpened(false).withContentClickableWhenMenuOpened(false).withSavedState(savedInstanceState).withMenuLayout(R.layout.menu_left_drawer).inject()
mLLMenu = mSlidingRootNav.layout.findViewById(R.id.ll_menu)
- //val ivQrcode = mSlidingRootNav.layout.findViewById(R.id.iv_qrcode)
- //ivQrcode.setOnClickListener { openNewPage(SettingsFragment::class.java) }
- //val ivSetting = mSlidingRootNav.layout.findViewById(R.id.iv_setting)
- //ivSetting.setOnClickListener { openNewPage(SettingsFragment::class.java) }
ViewUtils.setVisibility(mLLMenu, false)
mAdapter = DrawerAdapter(
mutableListOf(
@@ -243,25 +240,6 @@ class MainActivity : BaseActivity(), DrawerAdapter.OnItemS
override fun onDragEnd(isMenuOpened: Boolean) {
ViewUtils.setVisibility(mLLMenu, isMenuOpened)
- /*if (isMenuOpened) {
- if (!GuideCaseView.isShowOnce(this@MainActivity, getString(R.string.guide_key_sliding_root_navigation))) {
- val guideStep1 = GuideCaseView.Builder(this@MainActivity)
- .title("点击进入,可切换主题样式哦~~")
- .titleSize(18, TypedValue.COMPLEX_UNIT_SP)
- .focusOn(ivSetting)
- .build()
- val guideStep2 = GuideCaseView.Builder(this@MainActivity)
- .title("点击进入,扫码关注哦~~")
- .titleSize(18, TypedValue.COMPLEX_UNIT_SP)
- .focusOn(ivQrcode)
- .build()
- GuideCaseQueue()
- .add(guideStep1)
- .add(guideStep2)
- .show()
- GuideCaseView.setShowOnce(this@MainActivity, getString(R.string.guide_key_sliding_root_navigation))
- }
- }*/
}
})
}
@@ -302,14 +280,26 @@ class MainActivity : BaseActivity(), DrawerAdapter.OnItemS
}
POS_APPS -> {
- if (App.UserAppList.isEmpty() && App.SystemAppList.isEmpty()) {
- XToastUtils.info(getString(R.string.loading_app_list))
- val request = OneTimeWorkRequestBuilder().build()
- WorkManager.getInstance(this).enqueue(request)
- needToAppListFragment = true
- return
- }
- openNewPage(AppListFragment::class.java)
+ //检查读取应用列表权限是否获取
+ XXPermissions.with(this).permission(Permission.GET_INSTALLED_APPS).request(object : OnPermissionCallback {
+ override fun onGranted(permissions: MutableList, allGranted: Boolean) {
+ if (App.UserAppList.isEmpty() && App.SystemAppList.isEmpty()) {
+ XToastUtils.info(getString(R.string.loading_app_list))
+ val request = OneTimeWorkRequestBuilder().build()
+ WorkManager.getInstance(getContext()).enqueue(request)
+ needToAppListFragment = true
+ return
+ }
+ openNewPage(AppListFragment::class.java)
+ }
+
+ override fun onDenied(permissions: MutableList, doNotAskAgain: Boolean) {
+ XToastUtils.error(R.string.tips_get_installed_apps)
+ if (doNotAskAgain) {
+ XXPermissions.startPermissionActivity(getContext(), permissions)
+ }
+ }
+ })
}
POS_HELP -> AgentWebActivity.goWeb(this, getString(R.string.url_help))
@@ -389,4 +379,4 @@ class MainActivity : BaseActivity(), DrawerAdapter.OnItemS
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt
index 643f0adb..806a0035 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt
@@ -9,6 +9,9 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
+import com.hjq.permissions.OnPermissionCallback
+import com.hjq.permissions.Permission
+import com.hjq.permissions.XXPermissions
import com.idormy.sms.forwarder.App
import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.adapter.AppListAdapter
@@ -24,11 +27,11 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.xuexiang.xaop.annotation.SingleClick
import com.xuexiang.xpage.annotation.Page
+import com.xuexiang.xui.XUI
import com.xuexiang.xui.utils.DensityUtils
import com.xuexiang.xui.utils.ThemeUtils
import com.xuexiang.xui.utils.WidgetUtils
import com.xuexiang.xui.widget.actionbar.TitleBar
-import com.xuexiang.xutil.XUtil
import com.xuexiang.xutil.resource.ResUtils.getStringArray
@Suppress("PrivatePropertyName", "DEPRECATION")
@@ -91,10 +94,10 @@ class AppListFragment : BaseFragment() {
}
override fun onRefresh(refreshLayout: RefreshLayout) {
+ appListAdapter?.refresh(getAppsList(true))
refreshLayout.layout.postDelayed({
- appListAdapter?.refresh(getAppsList(true))
refreshLayout.finishRefresh()
- }, 3000)
+ }, 1000)
}
})
appListAdapter?.setOnItemClickListener { _, item, _ ->
@@ -120,12 +123,24 @@ class AppListFragment : BaseFragment() {
private fun getAppsList(refresh: Boolean): MutableList {
if (refresh || (currentType == "user" && App.UserAppList.isEmpty()) || (currentType == "system" && App.SystemAppList.isEmpty())) {
- XToastUtils.info(getString(R.string.loading_app_list))
- val request = OneTimeWorkRequestBuilder().build()
- WorkManager.getInstance(XUtil.getContext()).enqueue(request)
+ //检查读取应用列表权限是否获取
+ XXPermissions.with(this).permission(Permission.GET_INSTALLED_APPS).request(object : OnPermissionCallback {
+ override fun onGranted(permissions: MutableList, allGranted: Boolean) {
+ XToastUtils.info(getString(R.string.loading_app_list))
+ val request = OneTimeWorkRequestBuilder().build()
+ WorkManager.getInstance(XUI.getContext()).enqueue(request)
+ }
+
+ override fun onDenied(permissions: MutableList, doNotAskAgain: Boolean) {
+ XToastUtils.error(R.string.tips_get_installed_apps)
+ if (doNotAskAgain) {
+ XXPermissions.startPermissionActivity(XUI.getContext(), permissions)
+ }
+ }
+ })
}
return if (currentType == "system") App.SystemAppList else App.UserAppList
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 2108b9ff..be999792 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -385,6 +385,7 @@
App Icon
User App
System App
+ Please grant GET_INSTALLED_APPS permission
Please grant Notification permission, in order to keep the App alive!
Please grant Notification reading permission to SmsForwarder, before other Apps\'s notification could be forwarded. Forwarding automatically canceled!
Official website
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 7a522517..25b74cfe 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -386,6 +386,7 @@
应用图标
用户应用
系统应用
+ 请先授予获取应用列表权限
请先授予发送通知权限,有利于《短信转发器》保活!
请先授予《短信转发器》通知使用权,否则无法转发APP通知,已经自动关闭转发!
官网地址
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 77a36ccc..5b679648 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -380,6 +380,7 @@
應用圖標
用戶應用
系統應用
+ 請先授予獲取應用列表權限
請先授予發送通知權限,有利於《簡訊轉發器》保活!
請先授予《簡訊轉發器》通知使用權,否則無法轉發應用程式通知,已經自動關閉轉發!
官網地址
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a2b39a94..39a8e2a0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -413,6 +413,7 @@
应用图标
用户应用
系统应用
+ 请先授予获取应用列表权限
请先授予发送通知权限,有利于《短信转发器》保活!
请先授予《短信转发器》通知使用权,否则无法转发APP通知,已经自动关闭转发!
官网地址