Add system settings shortcut (#1271)

This commit is contained in:
Mateusz Idziejczak 2021-04-07 13:56:33 +02:00 committed by GitHub
parent bd2d26418a
commit f131edf857
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 53 additions and 0 deletions

View File

@ -21,6 +21,10 @@ import io.github.wulkanowy.utils.openInternetBrowser
import io.github.wulkanowy.utils.toFormattedString import io.github.wulkanowy.utils.toFormattedString
import io.github.wulkanowy.utils.toLocalDateTime import io.github.wulkanowy.utils.toLocalDateTime
import javax.inject.Inject import javax.inject.Inject
import android.content.Intent
import android.net.Uri
import android.provider.Settings
import android.util.Log
@AndroidEntryPoint @AndroidEntryPoint
class AboutFragment : BaseFragment<FragmentAboutBinding>(R.layout.fragment_about), AboutView, class AboutFragment : BaseFragment<FragmentAboutBinding>(R.layout.fragment_about), AboutView,

View File

@ -1,7 +1,12 @@
package io.github.wulkanowy.ui.modules.settings.notifications package io.github.wulkanowy.ui.modules.settings.notifications
import android.annotation.SuppressLint
import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -16,7 +21,9 @@ import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseActivity import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.base.ErrorDialog import io.github.wulkanowy.ui.base.ErrorDialog
import io.github.wulkanowy.ui.modules.main.MainView import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.utils.AppInfo
import io.github.wulkanowy.utils.openInternetBrowser import io.github.wulkanowy.utils.openInternetBrowser
import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
@ -27,6 +34,9 @@ class NotificationsFragment : PreferenceFragmentCompat(),
@Inject @Inject
lateinit var presenter: NotificationsPresenter lateinit var presenter: NotificationsPresenter
@Inject
lateinit var appInfo: AppInfo
companion object { companion object {
fun newInstance() = NotificationsFragment() fun newInstance() = NotificationsFragment()
} }
@ -46,6 +56,13 @@ class NotificationsFragment : PreferenceFragmentCompat(),
true true
} }
} }
findPreference<Preference>(getString(R.string.pref_key_notifications_system_settings))?.run {
setOnPreferenceClickListener {
presenter.onOpenSystemSettingsClicked()
true
}
}
} }
override fun onCreateRecyclerView( override fun onCreateRecyclerView(
@ -118,6 +135,24 @@ class NotificationsFragment : PreferenceFragmentCompat(),
.show() .show()
} }
@SuppressLint("InlinedApi")
override fun openSystemSettings() {
val intent = if (appInfo.systemVersion >= Build.VERSION_CODES.O) {
Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
putExtra("android.provider.extra.APP_PACKAGE", requireActivity().packageName)
}
} else {
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
data = Uri.fromParts("package", requireActivity().packageName, null)
}
}
try {
requireActivity().startActivity(intent)
} catch (e: Exception) {
Timber.e(e)
}
}
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this) preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this)

View File

@ -55,4 +55,8 @@ class NotificationsPresenter @Inject constructor(
fun onFixSyncIssuesClicked() { fun onFixSyncIssuesClicked() {
view?.showFixSyncDialog() view?.showFixSyncDialog()
} }
fun onOpenSystemSettingsClicked() {
view?.openSystemSettings()
}
} }

View File

@ -8,5 +8,7 @@ interface NotificationsView : BaseView {
fun showFixSyncDialog() fun showFixSyncDialog()
fun openSystemSettings()
fun enableNotification(notificationKey: String, enable: Boolean) fun enableNotification(notificationKey: String, enable: Boolean)
} }

View File

@ -14,6 +14,7 @@
<string name="pref_key_services_wifi_only">services_disable_wifi_only</string> <string name="pref_key_services_wifi_only">services_disable_wifi_only</string>
<string name="pref_key_services_force_sync">services_force_sync</string> <string name="pref_key_services_force_sync">services_force_sync</string>
<string name="pref_key_notifications_fix_issues">notifications_fix_issues</string> <string name="pref_key_notifications_fix_issues">notifications_fix_issues</string>
<string name="pref_key_notifications_system_settings">notifications_system_settings</string>
<string name="pref_key_notifications_enable">notifications_enable</string> <string name="pref_key_notifications_enable">notifications_enable</string>
<string name="pref_key_notifications_upcoming_lessons_enable">notifications_upcoming_lessons_enable</string> <string name="pref_key_notifications_upcoming_lessons_enable">notifications_upcoming_lessons_enable</string>
<string name="pref_key_notification_debug">notification_debug</string> <string name="pref_key_notification_debug">notification_debug</string>

View File

@ -385,6 +385,8 @@
<string name="about_facebook_summary">Like our facebook fanpage</string> <string name="about_facebook_summary">Like our facebook fanpage</string>
<string name="about_privacy">Privacy policy</string> <string name="about_privacy">Privacy policy</string>
<string name="about_privacy_summary">Rules for collecting personal data</string> <string name="about_privacy_summary">Rules for collecting personal data</string>
<string name="about_system">System settings</string>
<string name="about_system_summary">Open system settings</string>
<string name="about_homepage">Homepage</string> <string name="about_homepage">Homepage</string>
<string name="about_homepage_summary">Visit the website and help develop the application</string> <string name="about_homepage_summary">Visit the website and help develop the application</string>
<string name="about_licenses">Licenses</string> <string name="about_licenses">Licenses</string>
@ -490,6 +492,7 @@
<string name="pref_notify_header">Notifications</string> <string name="pref_notify_header">Notifications</string>
<string name="pref_notify_switch">Show notifications</string> <string name="pref_notify_switch">Show notifications</string>
<string name="pref_notify_upcoming_lessons_switch">Show upcoming lesson notifications</string> <string name="pref_notify_upcoming_lessons_switch">Show upcoming lesson notifications</string>
<string name="pref_notify_open_system_settings">Open system notification settings</string>
<string name="pref_notify_fix_sync_issues">Fix synchronization &amp; notifications issues</string> <string name="pref_notify_fix_sync_issues">Fix synchronization &amp; notifications issues</string>
<string name="pref_notify_fix_sync_issues_message">Your device may have data synchronization issues and with notifications.\n\nTo fix them, you need to add Wulkanowy to the autostart and turn off battery optimization/saving in the phone settings.</string> <string name="pref_notify_fix_sync_issues_message">Your device may have data synchronization issues and with notifications.\n\nTo fix them, you need to add Wulkanowy to the autostart and turn off battery optimization/saving in the phone settings.</string>
<string name="pref_notify_fix_sync_issues_settings_button">Go to settings</string> <string name="pref_notify_fix_sync_issues_settings_button">Go to settings</string>

View File

@ -20,6 +20,10 @@
app:key="@string/pref_key_notification_debug" app:key="@string/pref_key_notification_debug"
app:singleLineTitle="false" app:singleLineTitle="false"
app:title="@string/pref_notify_debug_switch" /> app:title="@string/pref_notify_debug_switch" />
<Preference
app:iconSpaceReserved="false"
app:key="@string/pref_key_notifications_system_settings"
app:title="@string/pref_notify_open_system_settings" />
<Preference <Preference
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
app:isPreferenceVisible="false" app:isPreferenceVisible="false"