From 40f8e6061fd1fba5bd9358fa9af39385c0165867 Mon Sep 17 00:00:00 2001 From: Tobias Preuss Date: Thu, 16 Jul 2020 17:39:36 +0200 Subject: [PATCH] Use "Context#getSystemService" extension function provided by "core-ktx". + Re-use local variable where possible. --- CHANGES.md | 1 + .../android/internal/network/NetworkCallbackStrategy.kt | 3 ++- .../android/internal/network/NetworkInfoReceiver.kt | 3 ++- .../im/vector/app/features/debug/DebugMenuActivity.kt | 8 ++++---- .../settings/troubleshoot/TestBackgroundRestrictions.kt | 4 ++-- .../app/fdroid/receiver/AlarmSyncBroadcastReceiver.kt | 7 ++++--- .../src/main/java/im/vector/app/core/extensions/View.kt | 6 +++--- .../src/main/java/im/vector/app/core/files/FileSaver.kt | 3 ++- .../main/java/im/vector/app/core/hardware/HardwareInfo.kt | 3 ++- .../src/main/java/im/vector/app/core/hardware/vibrator.kt | 3 ++- .../java/im/vector/app/core/services/CallRingPlayer.kt | 3 ++- .../java/im/vector/app/core/services/VectorSyncService.kt | 5 +++-- .../im/vector/app/core/utils/ExternalApplicationsUtil.kt | 3 ++- .../src/main/java/im/vector/app/core/utils/SystemUtils.kt | 5 +++-- .../java/im/vector/app/features/call/CallAudioManager.kt | 5 +++-- .../im/vector/app/features/call/VectorCallActivity.kt | 3 ++- .../app/features/call/WebRtcPeerConnectionManager.kt | 8 ++++---- .../im/vector/app/features/call/telecom/TelecomUtils.kt | 3 ++- .../java/im/vector/app/features/home/ShortcutsHandler.kt | 3 ++- .../app/features/notifications/NotificationUtils.kt | 3 ++- .../java/im/vector/app/features/rageshake/RageShake.kt | 6 +++--- 21 files changed, 52 insertions(+), 36 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 6f40a758fc..a928db9279 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,6 +20,7 @@ Build 🧱: - Other changes: + - Use `Context#getSystemService` extension function provided by `core-ktx` (#1702) - Hide Flair settings, this is not implemented yet. - Rename package `im.vector.riotx.attachmentviewer` to `im.vector.lib.attachmentviewer` - Rename package `im.vector.riotx.multipicker` to `im.vector.lib.multipicker` diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkCallbackStrategy.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkCallbackStrategy.kt index a639c61678..d014f1549b 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkCallbackStrategy.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkCallbackStrategy.kt @@ -22,6 +22,7 @@ import android.content.IntentFilter import android.net.ConnectivityManager import android.net.Network import android.os.Build +import androidx.core.content.getSystemService import timber.log.Timber import javax.inject.Inject @@ -53,7 +54,7 @@ internal class FallbackNetworkCallbackStrategy @Inject constructor(private val c internal class PreferredNetworkCallbackStrategy @Inject constructor(context: Context) : NetworkCallbackStrategy { private var hasChangedCallback: (() -> Unit)? = null - private val conn = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + private val conn = context.getSystemService()!! private val networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onLost(network: Network) { diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkInfoReceiver.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkInfoReceiver.kt index 645329628b..b54fa2b389 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkInfoReceiver.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkInfoReceiver.kt @@ -24,6 +24,7 @@ import android.content.Context import android.content.Intent import android.net.ConnectivityManager import android.net.NetworkInfo +import androidx.core.content.getSystemService import javax.inject.Inject internal class NetworkInfoReceiver @Inject constructor() : BroadcastReceiver() { @@ -31,7 +32,7 @@ internal class NetworkInfoReceiver @Inject constructor() : BroadcastReceiver() { var isConnectedCallback: ((Boolean) -> Unit)? = null override fun onReceive(context: Context, intent: Intent) { - val conn = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val conn = context.getSystemService()!! val networkInfo: NetworkInfo? = conn.activeNetworkInfo isConnectedCallback?.invoke(networkInfo?.isConnected ?: false) } diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt b/vector/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt index 349ee977de..c1a631b1ee 100644 --- a/vector/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt +++ b/vector/src/debug/java/im/vector/app/features/debug/DebugMenuActivity.kt @@ -19,11 +19,11 @@ package im.vector.app.features.debug import android.app.Activity import android.app.NotificationChannel import android.app.NotificationManager -import android.content.Context import android.content.Intent import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.Person +import androidx.core.content.getSystemService import butterknife.OnClick import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder @@ -83,7 +83,7 @@ class DebugMenuActivity : VectorBaseActivity() { @OnClick(R.id.debug_test_notification) fun testNotification() { - val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val notificationManager = getSystemService()!! // Create channel first if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { @@ -95,7 +95,7 @@ class DebugMenuActivity : VectorBaseActivity() { ) channel.description = "Channel description" - (getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).createNotificationChannel(channel) + notificationManager.createNotificationChannel(channel) val channel2 = NotificationChannel( @@ -105,7 +105,7 @@ class DebugMenuActivity : VectorBaseActivity() { ) channel2.description = "Channel description 2" - (getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).createNotificationChannel(channel2) + notificationManager.createNotificationChannel(channel2) } val builder = NotificationCompat.Builder(this, "CHAN") diff --git a/vector/src/fdroid/java/im/vector/app/fdroid/features/settings/troubleshoot/TestBackgroundRestrictions.kt b/vector/src/fdroid/java/im/vector/app/fdroid/features/settings/troubleshoot/TestBackgroundRestrictions.kt index b3c972ae8b..3e053d7fec 100644 --- a/vector/src/fdroid/java/im/vector/app/fdroid/features/settings/troubleshoot/TestBackgroundRestrictions.kt +++ b/vector/src/fdroid/java/im/vector/app/fdroid/features/settings/troubleshoot/TestBackgroundRestrictions.kt @@ -15,9 +15,9 @@ */ package im.vector.app.fdroid.features.settings.troubleshoot -import android.content.Context import android.net.ConnectivityManager import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.getSystemService import androidx.core.net.ConnectivityManagerCompat import im.vector.app.R import im.vector.app.core.resources.StringProvider @@ -29,7 +29,7 @@ class TestBackgroundRestrictions @Inject constructor(private val context: AppCom : TroubleshootTest(R.string.settings_troubleshoot_test_bg_restricted_title) { override fun perform() { - (context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).apply { + context.getSystemService()!!.apply { // Checks if the device is on a metered network if (isActiveNetworkMetered) { // Checks user’s Data Saver settings. diff --git a/vector/src/fdroid/java/im/vector/app/fdroid/receiver/AlarmSyncBroadcastReceiver.kt b/vector/src/fdroid/java/im/vector/app/fdroid/receiver/AlarmSyncBroadcastReceiver.kt index 44d437fe39..08b81ec3e2 100644 --- a/vector/src/fdroid/java/im/vector/app/fdroid/receiver/AlarmSyncBroadcastReceiver.kt +++ b/vector/src/fdroid/java/im/vector/app/fdroid/receiver/AlarmSyncBroadcastReceiver.kt @@ -26,6 +26,7 @@ import android.os.PowerManager import androidx.core.content.ContextCompat import im.vector.app.core.di.HasVectorInjector import im.vector.app.core.services.VectorSyncService +import androidx.core.content.getSystemService import im.vector.matrix.android.internal.session.sync.job.SyncService import timber.log.Timber @@ -42,7 +43,7 @@ class AlarmSyncBroadcastReceiver : BroadcastReceiver() { } // Acquire a lock to give enough time for the sync :/ - (context.getSystemService(Context.POWER_SERVICE) as PowerManager).run { + context.getSystemService()!!.run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "riotx:fdroidSynclock").apply { acquire((10_000).toLong()) } @@ -74,7 +75,7 @@ class AlarmSyncBroadcastReceiver : BroadcastReceiver() { } val pIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT) val firstMillis = System.currentTimeMillis() + delay - val alarmMgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager + val alarmMgr = context.getSystemService()!! if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, firstMillis, pIntent) } else { @@ -86,7 +87,7 @@ class AlarmSyncBroadcastReceiver : BroadcastReceiver() { Timber.v("Cancel alarm") val intent = Intent(context, AlarmSyncBroadcastReceiver::class.java) val pIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT) - val alarmMgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager + val alarmMgr = context.getSystemService()!! alarmMgr.cancel(pIntent) } } diff --git a/vector/src/main/java/im/vector/app/core/extensions/View.kt b/vector/src/main/java/im/vector/app/core/extensions/View.kt index d8156d5857..7ec86d3508 100644 --- a/vector/src/main/java/im/vector/app/core/extensions/View.kt +++ b/vector/src/main/java/im/vector/app/core/extensions/View.kt @@ -16,12 +16,12 @@ package im.vector.app.core.extensions -import android.content.Context import android.view.View import android.view.inputmethod.InputMethodManager +import androidx.core.content.getSystemService fun View.hideKeyboard() { - val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager + val imm = context?.getSystemService() imm?.hideSoftInputFromWindow(windowToken, 0) } @@ -29,6 +29,6 @@ fun View.showKeyboard(andRequestFocus: Boolean = false) { if (andRequestFocus) { requestFocus() } - val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager + val imm = context?.getSystemService() imm?.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT) } diff --git a/vector/src/main/java/im/vector/app/core/files/FileSaver.kt b/vector/src/main/java/im/vector/app/core/files/FileSaver.kt index eb68110995..c4acbb5e65 100644 --- a/vector/src/main/java/im/vector/app/core/files/FileSaver.kt +++ b/vector/src/main/java/im/vector/app/core/files/FileSaver.kt @@ -23,6 +23,7 @@ import android.net.Uri import android.os.Build import android.provider.MediaStore import androidx.annotation.WorkerThread +import androidx.core.content.getSystemService import arrow.core.Try import okio.buffer import okio.sink @@ -85,7 +86,7 @@ fun addEntryToDownloadManager(context: Context, null } } else { - val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as? DownloadManager + val downloadManager = context.getSystemService() @Suppress("DEPRECATION") downloadManager?.addCompletedDownload(title, description, true, mimeType, file.absolutePath, file.length(), true) return null diff --git a/vector/src/main/java/im/vector/app/core/hardware/HardwareInfo.kt b/vector/src/main/java/im/vector/app/core/hardware/HardwareInfo.kt index 0dae558f00..dac9102a93 100644 --- a/vector/src/main/java/im/vector/app/core/hardware/HardwareInfo.kt +++ b/vector/src/main/java/im/vector/app/core/hardware/HardwareInfo.kt @@ -23,6 +23,7 @@ import android.hardware.Camera import android.hardware.camera2.CameraCharacteristics import android.hardware.camera2.CameraManager import android.os.Build +import androidx.core.content.getSystemService import javax.inject.Inject class HardwareInfo @Inject constructor( @@ -36,7 +37,7 @@ class HardwareInfo @Inject constructor( return Camera.getNumberOfCameras() > 0 } - val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager? ?: return Camera.getNumberOfCameras() > 0 + val manager = context.getSystemService() ?: return Camera.getNumberOfCameras() > 0 return manager.cameraIdList.any { val lensFacing = manager.getCameraCharacteristics(it).get(CameraCharacteristics.LENS_FACING) diff --git a/vector/src/main/java/im/vector/app/core/hardware/vibrator.kt b/vector/src/main/java/im/vector/app/core/hardware/vibrator.kt index 64a7886c2c..2746fde18a 100644 --- a/vector/src/main/java/im/vector/app/core/hardware/vibrator.kt +++ b/vector/src/main/java/im/vector/app/core/hardware/vibrator.kt @@ -20,9 +20,10 @@ import android.content.Context import android.os.Build import android.os.VibrationEffect import android.os.Vibrator +import androidx.core.content.getSystemService fun vibrate(context: Context, durationMillis: Long = 100) { - val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator? ?: return + val vibrator = context.getSystemService() ?: return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { vibrator.vibrate(VibrationEffect.createOneShot(durationMillis, VibrationEffect.DEFAULT_AMPLITUDE)) } else { diff --git a/vector/src/main/java/im/vector/app/core/services/CallRingPlayer.kt b/vector/src/main/java/im/vector/app/core/services/CallRingPlayer.kt index 68d5a9a260..b14a097eb6 100644 --- a/vector/src/main/java/im/vector/app/core/services/CallRingPlayer.kt +++ b/vector/src/main/java/im/vector/app/core/services/CallRingPlayer.kt @@ -21,6 +21,7 @@ import android.media.AudioAttributes import android.media.AudioManager import android.media.MediaPlayer import android.os.Build +import androidx.core.content.getSystemService import im.vector.app.R import timber.log.Timber @@ -33,7 +34,7 @@ class CallRingPlayer( private var player: MediaPlayer? = null fun start() { - val audioManager: AudioManager = applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager + val audioManager = applicationContext.getSystemService()!! player?.release() player = createPlayer() diff --git a/vector/src/main/java/im/vector/app/core/services/VectorSyncService.kt b/vector/src/main/java/im/vector/app/core/services/VectorSyncService.kt index 425ec9a23a..bfba27e77d 100644 --- a/vector/src/main/java/im/vector/app/core/services/VectorSyncService.kt +++ b/vector/src/main/java/im/vector/app/core/services/VectorSyncService.kt @@ -21,6 +21,7 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.os.Build +import androidx.core.content.getSystemService import im.vector.app.R import im.vector.app.core.extensions.vectorComponent import im.vector.app.features.notifications.NotificationUtils @@ -64,7 +65,7 @@ class VectorSyncService : SyncService() { } private fun removeForegroundNotification() { - val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val notificationManager = getSystemService()!! notificationManager.cancel(NotificationUtils.NOTIFICATION_ID_FOREGROUND_SERVICE) } @@ -75,7 +76,7 @@ class VectorSyncService : SyncService() { PendingIntent.getService(this, 0, newIntent(this, sessionId), 0) } val firstMillis = System.currentTimeMillis() + delay - val alarmMgr = getSystemService(Context.ALARM_SERVICE) as AlarmManager + val alarmMgr = getSystemService()!! if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, firstMillis, pendingIntent) } else { diff --git a/vector/src/main/java/im/vector/app/core/utils/ExternalApplicationsUtil.kt b/vector/src/main/java/im/vector/app/core/utils/ExternalApplicationsUtil.kt index 22bae5e296..61adc11706 100644 --- a/vector/src/main/java/im/vector/app/core/utils/ExternalApplicationsUtil.kt +++ b/vector/src/main/java/im/vector/app/core/utils/ExternalApplicationsUtil.kt @@ -35,6 +35,7 @@ import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsSession import androidx.core.content.ContextCompat import androidx.core.content.FileProvider +import androidx.core.content.getSystemService import androidx.fragment.app.Fragment import im.vector.app.BuildConfig import im.vector.app.R @@ -375,7 +376,7 @@ private fun saveMediaLegacy(context: Context, mediaMimeType: String?, title: Str } val savedFile = saveFileIntoLegacy(file, downloadDir, outputFilename) if (savedFile != null) { - val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as? DownloadManager + val downloadManager = context.getSystemService() downloadManager?.addCompletedDownload( savedFile.name, title, diff --git a/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt b/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt index 88bbe24f88..1f2263889c 100644 --- a/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt +++ b/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt @@ -30,6 +30,7 @@ import android.provider.Settings import android.widget.Toast import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.getSystemService import androidx.fragment.app.Fragment import im.vector.app.R import im.vector.app.features.notifications.NotificationUtils @@ -47,7 +48,7 @@ import im.vector.app.features.notifications.NotificationUtils fun isIgnoringBatteryOptimizations(context: Context): Boolean { // no issue before Android M, battery optimisations did not exist return Build.VERSION.SDK_INT < Build.VERSION_CODES.M - || (context.getSystemService(Context.POWER_SERVICE) as PowerManager?)?.isIgnoringBatteryOptimizations(context.packageName) == true + || context.getSystemService()?.isIgnoringBatteryOptimizations(context.packageName) == true } fun isAirplaneModeOn(context: Context): Boolean { @@ -84,7 +85,7 @@ fun requestDisablingBatteryOptimization(activity: Activity, fragment: Fragment?, * @param text the text to copy */ fun copyToClipboard(context: Context, text: CharSequence, showToast: Boolean = true, @StringRes toastMessage: Int = R.string.copied_to_clipboard) { - val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clipboard = context.getSystemService()!! clipboard.setPrimaryClip(ClipData.newPlainText("", text)) if (showToast) { context.toast(toastMessage) diff --git a/vector/src/main/java/im/vector/app/features/call/CallAudioManager.kt b/vector/src/main/java/im/vector/app/features/call/CallAudioManager.kt index 2bde718a9c..306b9e6e75 100644 --- a/vector/src/main/java/im/vector/app/features/call/CallAudioManager.kt +++ b/vector/src/main/java/im/vector/app/features/call/CallAudioManager.kt @@ -22,6 +22,7 @@ import android.bluetooth.BluetoothProfile import android.content.Context import android.content.pm.PackageManager import android.media.AudioManager +import androidx.core.content.getSystemService import im.vector.app.core.services.WiredHeadsetStateReceiver import im.vector.matrix.android.api.session.call.MxCall import timber.log.Timber @@ -55,9 +56,9 @@ class CallAudioManager( init { executor.execute { - audioManager = applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager + audioManager = applicationContext.getSystemService() } - val bm = applicationContext.getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager + val bm = applicationContext.getSystemService() val adapter = bm?.adapter Timber.d("## VOIP Bluetooth adapter $adapter") bluetoothAdapter = adapter diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt index aa1005e32d..80a1dd7057 100644 --- a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt @@ -28,6 +28,7 @@ import android.view.View import android.view.Window import android.view.WindowManager import androidx.appcompat.app.AlertDialog +import androidx.core.content.getSystemService import androidx.core.view.ViewCompat import androidx.core.view.isInvisible import androidx.core.view.isVisible @@ -458,7 +459,7 @@ class VectorCallActivity : VectorBaseActivity(), CallControlsView.InteractionLis ) } - with(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager) { + with(getSystemService()!!) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { requestDismissKeyguard(this@VectorCallActivity, null) } diff --git a/vector/src/main/java/im/vector/app/features/call/WebRtcPeerConnectionManager.kt b/vector/src/main/java/im/vector/app/features/call/WebRtcPeerConnectionManager.kt index edc74fffc6..051492ac04 100644 --- a/vector/src/main/java/im/vector/app/features/call/WebRtcPeerConnectionManager.kt +++ b/vector/src/main/java/im/vector/app/features/call/WebRtcPeerConnectionManager.kt @@ -20,6 +20,7 @@ import android.content.Context import android.hardware.camera2.CameraManager import android.os.Build import androidx.annotation.RequiresApi +import androidx.core.content.getSystemService import im.vector.app.ActiveSessionDataSource import im.vector.app.core.services.BluetoothHeadsetReceiver import im.vector.app.core.services.CallService @@ -480,7 +481,7 @@ class WebRtcPeerConnectionManager @Inject constructor( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val restarter = CameraRestarter(cameraInUse?.name ?: "", callContext.mxCall.callId) callContext.cameraAvailabilityCallback = restarter - val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager + val cameraManager = context.getSystemService()!! cameraManager.registerAvailabilityCallback(restarter, null) } } @@ -792,7 +793,7 @@ class WebRtcPeerConnectionManager @Inject constructor( currentCall?.cameraAvailabilityCallback?.let { cameraAvailabilityCallback -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager + val cameraManager = context.getSystemService()!! cameraManager.unregisterAvailabilityCallback(cameraAvailabilityCallback) } } @@ -1048,8 +1049,7 @@ class WebRtcPeerConnectionManager @Inject constructor( // re-start the capture // TODO notify that video is enabled videoCapturer?.startCapture(currentCaptureMode.width, currentCaptureMode.height, currentCaptureMode.fps) - (context.getSystemService(Context.CAMERA_SERVICE) as? CameraManager) - ?.unregisterAvailabilityCallback(this) + context.getSystemService()?.unregisterAvailabilityCallback(this) } } } diff --git a/vector/src/main/java/im/vector/app/features/call/telecom/TelecomUtils.kt b/vector/src/main/java/im/vector/app/features/call/telecom/TelecomUtils.kt index 5601f769d1..819a1f6c0a 100644 --- a/vector/src/main/java/im/vector/app/features/call/telecom/TelecomUtils.kt +++ b/vector/src/main/java/im/vector/app/features/call/telecom/TelecomUtils.kt @@ -18,11 +18,12 @@ package im.vector.app.features.call.telecom import android.content.Context import android.telephony.TelephonyManager +import androidx.core.content.getSystemService object TelecomUtils { fun isLineBusy(context: Context): Boolean { - val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager + val telephonyManager = context.getSystemService() ?: return false return telephonyManager.callState != TelephonyManager.CALL_STATE_IDLE } diff --git a/vector/src/main/java/im/vector/app/features/home/ShortcutsHandler.kt b/vector/src/main/java/im/vector/app/features/home/ShortcutsHandler.kt index 5d27f8ca69..4d13e52d22 100644 --- a/vector/src/main/java/im/vector/app/features/home/ShortcutsHandler.kt +++ b/vector/src/main/java/im/vector/app/features/home/ShortcutsHandler.kt @@ -20,6 +20,7 @@ import android.content.Context import android.content.pm.ShortcutManager import android.graphics.Bitmap import android.os.Build +import androidx.core.content.getSystemService import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat @@ -96,7 +97,7 @@ class ShortcutsHandler @Inject constructor( // We can only disabled pinned shortcuts with the API, but at least it will prevent the crash if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { - context.getSystemService(ShortcutManager::class.java) + context.getSystemService() ?.let { it.disableShortcuts(it.pinnedShortcuts.map { pinnedShortcut -> pinnedShortcut.id }) } diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt index c42b7ea635..2b070e540e 100755 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt @@ -35,6 +35,7 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.app.RemoteInput import androidx.core.app.TaskStackBuilder import androidx.core.content.ContextCompat +import androidx.core.content.getSystemService import androidx.core.graphics.drawable.IconCompat import androidx.fragment.app.Fragment import im.vector.app.BuildConfig @@ -853,7 +854,7 @@ class NotificationUtils @Inject constructor(private val context: Context, } // We cannot use NotificationManagerCompat here. - val setting = (context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).currentInterruptionFilter + val setting = context.getSystemService()!!.currentInterruptionFilter return setting == NotificationManager.INTERRUPTION_FILTER_NONE || setting == NotificationManager.INTERRUPTION_FILTER_ALARMS diff --git a/vector/src/main/java/im/vector/app/features/rageshake/RageShake.kt b/vector/src/main/java/im/vector/app/features/rageshake/RageShake.kt index 763fde101a..31b15c76d0 100644 --- a/vector/src/main/java/im/vector/app/features/rageshake/RageShake.kt +++ b/vector/src/main/java/im/vector/app/features/rageshake/RageShake.kt @@ -21,6 +21,7 @@ import android.hardware.Sensor import android.hardware.SensorManager import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.getSystemService import com.squareup.seismic.ShakeDetector import im.vector.app.R import im.vector.app.core.hardware.vibrate @@ -41,7 +42,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity, var interceptor: (() -> Unit)? = null fun start() { - val sensorManager = activity.getSystemService(AppCompatActivity.SENSOR_SERVICE) as? SensorManager ?: return + val sensorManager = activity.getSystemService() ?: return shakeDetector = ShakeDetector(this).apply { setSensitivity(vectorPreferences.getRageshakeSensitivity()) @@ -94,8 +95,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity, * Check if the feature is available */ fun isAvailable(context: Context): Boolean { - return (context.getSystemService(AppCompatActivity.SENSOR_SERVICE) as? SensorManager) - ?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null + return context.getSystemService()?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null } } }