diff --git a/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt index 57efb90f..855e494e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt @@ -18,6 +18,9 @@ import androidx.viewpager.widget.ViewPager import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomsheet.BottomSheetDialog import com.gyf.cactus.ext.cactusUpdateNotification +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.WidgetItemAdapter @@ -26,6 +29,7 @@ import com.idormy.sms.forwarder.core.webview.AgentWebActivity import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.databinding.ActivityMainBinding import com.idormy.sms.forwarder.fragment.* +import com.idormy.sms.forwarder.service.ForegroundService import com.idormy.sms.forwarder.utils.* import com.idormy.sms.forwarder.utils.sdkinit.XUpdateInit import com.idormy.sms.forwarder.widget.GuideTipsDialog.Companion.showTips @@ -88,6 +92,27 @@ class MainActivity : BaseActivity(), } } } + + //检查通知权限是否获取 + XXPermissions.with(this) + .permission(Permission.NOTIFICATION_SERVICE) + .permission(Permission.POST_NOTIFICATIONS) + .request(OnPermissionCallback { _, allGranted -> + if (!allGranted) { + XToastUtils.error(R.string.tips_notification) + return@OnPermissionCallback + } + + //启动前台服务 + if (!ForegroundService.isRunning) { + val intent = Intent(this, ForegroundService::class.java) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(intent) + } else { + startService(intent) + } + } + }) } override val isSupportSlideBack: Boolean diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt index 644f51cb..324533bf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt @@ -434,27 +434,18 @@ class SettingsFragment : BaseFragment(), View.OnClickL if (isChecked) { //检查权限是否获取 XXPermissions.with(this) - // 通知栏监听权限 .permission(Permission.BIND_NOTIFICATION_LISTENER_SERVICE) - // 通知栏权限 - .permission(Permission.NOTIFICATION_SERVICE).request(object : OnPermissionCallback { - override fun onGranted(permissions: List, all: Boolean) { - SettingUtils.enableAppNotify = true - sbEnableAppNotify.isChecked = true - CommonUtils.toggleNotificationListenerService(requireContext()) - } - - override fun onDenied(permissions: List, never: Boolean) { + .request(OnPermissionCallback { _, allGranted -> + if (!allGranted) { SettingUtils.enableAppNotify = false sbEnableAppNotify.isChecked = false XToastUtils.error(R.string.tips_notification_listener) - // 如果是被永久拒绝就跳转到应用权限系统设置页面 - MaterialDialog.Builder(context!!).content(R.string.toast_denied_never).positiveText(R.string.lab_yes).negativeText(R.string.lab_no).onPositive { _: MaterialDialog?, _: DialogAction? -> - XXPermissions.startPermissionActivity( - requireContext(), permissions - ) - }.show() + return@OnPermissionCallback } + + SettingUtils.enableAppNotify = true + sbEnableAppNotify.isChecked = true + CommonUtils.toggleNotificationListenerService(requireContext()) }) } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt index f53565d6..9735d376 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt @@ -99,7 +99,7 @@ class CommonUtils private constructor() { * @return 隐私政策说明 */ private fun getPrivacyContent(context: Context): SpannableStringBuilder { - return SpannableStringBuilder().append(" ").append(ResUtils.getString(R.string.privacy_content_1)).append(" ").append(ResUtils.getString(R.string.app_name)).append("!\n").append(" ").append(ResUtils.getString(R.string.privacy_content_2)).append(" ").append(ResUtils.getString(R.string.privacy_content_3)).append(getPrivacyLink(context, PRIVACY_URL)).append(ResUtils.getString(R.string.privacy_content_4)).append(" ").append(ResUtils.getString(R.string.privacy_content_5)).append(getPrivacyLink(context, PRIVACY_URL)).append(ResUtils.getString(R.string.privacy_content_6)) + return SpannableStringBuilder().append(" ").append(ResUtils.getString(R.string.privacy_content_1)).append(" ").append(ResUtils.getString(R.string.app_name)).append("!\n").append(" ").append(ResUtils.getString(R.string.privacy_content_2)).append(" ").append(ResUtils.getString(R.string.privacy_content_3)).append(getPrivacyLink(context, PRIVACY_URL)).append(ResUtils.getString(R.string.privacy_content_4)).append(" ").append(ResUtils.getString(R.string.privacy_content_5)).append(getPrivacyLink(context, PRIVACY_URL)).append(ResUtils.getString(R.string.privacy_content_6)).append(" ").append(ResUtils.getString(R.string.privacy_content_7)) } /** diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 4633e788..894c0280 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -59,7 +59,7 @@ Still disagree Reminder Think about it again - We attach great importance to the protection of your personal information, and promise to protect and process your information strictly in accordance with the \"%s Privacy Policy\". If you do not agree to this policy, unfortunately we will not be able to serve you. + We attach great importance to the protection of your personal information, and promise to protect and process your information strictly in accordance with the \"%s Privacy Policy\". \n\nIf you do not agree to this policy, unfortunately we will not be able to serve you. \"%s Privacy Policy\" @@ -436,6 +436,7 @@ User App System App Please deactivate power optimization for SmsForwarder, in order to keep the App alive! + 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! The notification service is enabled The notification service is disabled @@ -758,7 +759,8 @@ In order to better protect your rights and comply with relevant regulatory requirements, we will pass " " Explain to you how we collect, store, protect, use and make your information available externally, and explain your rights.\n For more details, please check " - " full text. + "full text.\n\n + "Please grant Notification permission, in order to keep the App alive! Other login methods Request succeeded Request failed: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c823ff35..20b6d17f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,7 +59,7 @@ 仍不同意 温馨提示 要不要再想想 - 我们非常重视对你个人信息的保护,承诺严格按照《%s隐私权政策》保护及处理你的信息。如果你不同意该政策,很遗憾我们将无法为你提供服务 + 我们非常重视对你个人信息的保护,承诺严格按照《%s隐私权政策》保护及处理你的信息。\n\n如果你不同意该政策,很遗憾我们将无法为你提供服务! 《%s隐私权政策》 @@ -437,6 +437,7 @@ 用户应用 系统应用 请将省电优化设置为无限制(不优化),有利于《短信转发器》保活! + 请先授予发送通知权限,有利于《短信转发器》保活! 请先授予《短信转发器》通知使用权,否则无法转发APP通知,已经自动关闭转发! 通知服务已开启 通知服务未开启 @@ -759,7 +760,8 @@ 为了更好地保护你的权益,同时遵守相关监管的要求,我们将通过 向你说明我们会如何收集、存储、保护、使用及对外提供你的信息,并说明你享有的权利。\n 更多详情,敬请查阅 - 全文。 + 全文。\n\n + 请先授予发送通知权限,有利于《短信转发器》保活! 其他登录方式 请求成功 请求失败: