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通知,已经自动关闭转发! 官网地址