From da2490b1b8f1abcc0156e2d25e72630ea4f2ad3d Mon Sep 17 00:00:00 2001 From: Mygod Date: Thu, 8 Mar 2018 23:31:29 -0800 Subject: [PATCH] Use ContextCompat.getSystemService --- mobile/src/main/java/com/github/shadowsocks/AppManager.kt | 8 ++------ .../main/java/com/github/shadowsocks/ProfilesFragment.kt | 3 ++- .../main/java/com/github/shadowsocks/ScannerActivity.kt | 4 ++-- .../java/com/github/shadowsocks/VpnRequestActivity.kt | 5 ++--- .../com/github/shadowsocks/acl/CustomRulesFragment.kt | 4 ++-- .../java/com/github/shadowsocks/bg/ServiceNotification.kt | 5 +++-- .../main/java/com/github/shadowsocks/bg/TileService.kt | 4 ++-- .../src/main/java/com/github/shadowsocks/bg/VpnService.kt | 4 ++-- .../src/main/java/com/github/shadowsocks/utils/Utils.kt | 3 +++ .../com/github/shadowsocks/widget/ShrinkUpwardBehavior.kt | 3 ++- 10 files changed, 22 insertions(+), 21 deletions(-) diff --git a/mobile/src/main/java/com/github/shadowsocks/AppManager.kt b/mobile/src/main/java/com/github/shadowsocks/AppManager.kt index 415fa59b..c5f59f5f 100644 --- a/mobile/src/main/java/com/github/shadowsocks/AppManager.kt +++ b/mobile/src/main/java/com/github/shadowsocks/AppManager.kt @@ -27,7 +27,6 @@ import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.ClipData import android.content.ClipboardManager -import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager @@ -49,10 +48,7 @@ import com.futuremind.recyclerviewfastscroll.SectionTitleProvider import com.github.shadowsocks.App.Companion.app import com.github.shadowsocks.database.ProfileManager import com.github.shadowsocks.preference.DataStore -import com.github.shadowsocks.utils.DirectBoot -import com.github.shadowsocks.utils.Key -import com.github.shadowsocks.utils.resolveResourceId -import com.github.shadowsocks.utils.thread +import com.github.shadowsocks.utils.* import java.util.concurrent.atomic.AtomicBoolean class AppManager : AppCompatActivity(), Toolbar.OnMenuItemClickListener { @@ -142,7 +138,7 @@ class AppManager : AppCompatActivity(), Toolbar.OnMenuItemClickListener { private lateinit var loadingView: View private val appsLoading = AtomicBoolean() private val handler = Handler() - private val clipboard by lazy { getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager } + private val clipboard by lazy { systemService() } private fun initProxiedApps(str: String = DataStore.individual) { proxiedApps = str.split('\n').toHashSet() diff --git a/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt b/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt index 45b78515..5828c281 100644 --- a/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt +++ b/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt @@ -45,6 +45,7 @@ import com.github.shadowsocks.database.ProfileManager import com.github.shadowsocks.plugin.PluginConfiguration import com.github.shadowsocks.preference.DataStore import com.github.shadowsocks.utils.Action +import com.github.shadowsocks.utils.systemService import com.github.shadowsocks.widget.UndoSnackbarManager import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdSize @@ -305,7 +306,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener { private var txTotal: Long = 0L private var rxTotal: Long = 0L - private val clipboard by lazy { requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager } + private val clipboard by lazy { requireContext().systemService() } private fun startConfig(id: Int) = startActivity(Intent(context, ProfileConfigActivity::class.java) .putExtra(Action.EXTRA_PROFILE_ID, id)) diff --git a/mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt b/mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt index 1cb100e3..e415e785 100644 --- a/mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt +++ b/mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt @@ -21,7 +21,6 @@ package com.github.shadowsocks import android.app.Activity -import android.content.Context import android.content.Intent import android.content.pm.ShortcutManager import android.graphics.BitmapFactory @@ -40,6 +39,7 @@ import com.github.shadowsocks.App.Companion.app import com.github.shadowsocks.database.Profile import com.github.shadowsocks.database.ProfileManager import com.github.shadowsocks.utils.resolveResourceId +import com.github.shadowsocks.utils.systemService import com.google.android.gms.samples.vision.barcodereader.BarcodeCapture import com.google.android.gms.samples.vision.barcodereader.BarcodeGraphic import com.google.android.gms.vision.Frame @@ -65,7 +65,7 @@ class ScannerActivity : AppCompatActivity(), Toolbar.OnMenuItemClickListener, Ba super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT >= 25) getSystemService(ShortcutManager::class.java).reportShortcutUsed("scan") if (try { - (getSystemService(Context.CAMERA_SERVICE) as CameraManager).cameraIdList.isEmpty() + systemService().cameraIdList.isEmpty() } catch (_: CameraAccessException) { true }) { diff --git a/mobile/src/main/java/com/github/shadowsocks/VpnRequestActivity.kt b/mobile/src/main/java/com/github/shadowsocks/VpnRequestActivity.kt index da0cc06d..be89a58c 100644 --- a/mobile/src/main/java/com/github/shadowsocks/VpnRequestActivity.kt +++ b/mobile/src/main/java/com/github/shadowsocks/VpnRequestActivity.kt @@ -22,7 +22,6 @@ package com.github.shadowsocks import android.app.KeyguardManager import android.content.BroadcastReceiver -import android.content.Context import android.content.Intent import android.content.IntentFilter import android.net.VpnService @@ -33,6 +32,7 @@ import com.github.shadowsocks.App.Companion.app import com.github.shadowsocks.aidl.IShadowsocksService import com.github.shadowsocks.bg.BaseService import com.github.shadowsocks.utils.broadcastReceiver +import com.github.shadowsocks.utils.systemService class VpnRequestActivity : AppCompatActivity(), ShadowsocksConnection.Interface { companion object { @@ -48,8 +48,7 @@ class VpnRequestActivity : AppCompatActivity(), ShadowsocksConnection.Interface finish() return } - val km = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - if (km.inKeyguardRestrictedInputMode()) { + if (systemService().inKeyguardRestrictedInputMode()) { receiver = broadcastReceiver { _, _ -> connection.connect() } registerReceiver(receiver, IntentFilter(Intent.ACTION_USER_PRESENT)) } else connection.connect() diff --git a/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt b/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt index f244acaf..750e770c 100644 --- a/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt +++ b/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt @@ -22,7 +22,6 @@ package com.github.shadowsocks.acl import android.content.ClipData import android.content.ClipboardManager -import android.content.Context import android.os.Build import android.os.Bundle import android.support.design.widget.Snackbar @@ -48,6 +47,7 @@ import com.github.shadowsocks.bg.BaseService import com.github.shadowsocks.utils.Subnet import com.github.shadowsocks.utils.asIterable import com.github.shadowsocks.utils.resolveResourceId +import com.github.shadowsocks.utils.systemService import com.github.shadowsocks.widget.UndoSnackbarManager import java.net.IDN import java.net.MalformedURLException @@ -360,7 +360,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, private lateinit var list: RecyclerView private var mode: ActionMode? = null private lateinit var undoManager: UndoSnackbarManager - private val clipboard by lazy { requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager } + private val clipboard by lazy { requireContext().systemService() } private fun onSelectedItemsUpdated() { if (selectedItems.isEmpty()) mode?.finish() else if (mode == null) mode = toolbar.startActionMode(this) diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/ServiceNotification.kt b/mobile/src/main/java/com/github/shadowsocks/bg/ServiceNotification.kt index 08d9f1a1..59bee155 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/ServiceNotification.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/ServiceNotification.kt @@ -36,6 +36,7 @@ import com.github.shadowsocks.R import com.github.shadowsocks.aidl.IShadowsocksServiceCallback import com.github.shadowsocks.utils.Action import com.github.shadowsocks.utils.broadcastReceiver +import com.github.shadowsocks.utils.systemService import java.util.* /** @@ -46,7 +47,7 @@ import java.util.* */ class ServiceNotification(private val service: BaseService.Interface, profileName: String, channel: String, private val visible: Boolean = false) { - private val keyGuard = (service as Context).getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + private val keyGuard = (service as Context).systemService() private val nm by lazy { (service as Context).getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager } @@ -82,7 +83,7 @@ class ServiceNotification(private val service: BaseService.Interface, profileNam service as Context if (Build.VERSION.SDK_INT < 24) builder.addAction(R.drawable.ic_navigation_close, service.getString(R.string.stop), PendingIntent.getBroadcast(service, 0, Intent(Action.CLOSE), 0)) - val power = service.getSystemService(Context.POWER_SERVICE) as PowerManager + val power = service.systemService() update(if (power.isInteractive) Intent.ACTION_SCREEN_ON else Intent.ACTION_SCREEN_OFF, true) val screenFilter = IntentFilter() screenFilter.addAction(Intent.ACTION_SCREEN_ON) diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/TileService.kt b/mobile/src/main/java/com/github/shadowsocks/bg/TileService.kt index 55cdb4dd..36390a13 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/TileService.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/TileService.kt @@ -21,7 +21,6 @@ package com.github.shadowsocks.bg import android.app.KeyguardManager -import android.content.Context import android.graphics.drawable.Icon import android.service.quicksettings.Tile import android.support.annotation.RequiresApi @@ -31,6 +30,7 @@ import com.github.shadowsocks.ShadowsocksConnection import com.github.shadowsocks.aidl.IShadowsocksService import com.github.shadowsocks.aidl.IShadowsocksServiceCallback import com.github.shadowsocks.preference.DataStore +import com.github.shadowsocks.utils.systemService import android.service.quicksettings.TileService as BaseTileService @RequiresApi(24) @@ -38,7 +38,7 @@ class TileService : BaseTileService(), ShadowsocksConnection.Interface { private val iconIdle by lazy { Icon.createWithResource(this, R.drawable.ic_service_idle) } private val iconBusy by lazy { Icon.createWithResource(this, R.drawable.ic_service_busy) } private val iconConnected by lazy { Icon.createWithResource(this, R.drawable.ic_service_active) } - private val keyguard by lazy { getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager } + private val keyguard by lazy { systemService() } override val serviceCallback: IShadowsocksServiceCallback.Stub by lazy { @RequiresApi(24) diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt b/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt index 1cbdd618..2fb68aeb 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt @@ -22,7 +22,6 @@ package com.github.shadowsocks.bg import android.annotation.TargetApi import android.app.Service -import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.net.* @@ -40,6 +39,7 @@ import com.github.shadowsocks.acl.Acl import com.github.shadowsocks.preference.DataStore import com.github.shadowsocks.utils.Subnet import com.github.shadowsocks.utils.parseNumericAddress +import com.github.shadowsocks.utils.systemService import java.io.File import java.io.FileDescriptor import java.io.IOException @@ -108,7 +108,7 @@ class VpnService : BaseVpnService(), LocalDnsService.Interface { private var worker: ProtectWorker? = null private var tun2socksProcess: GuardedProcess? = null - private val connectivity by lazy { getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager } + private val connectivity by lazy { systemService() } @TargetApi(Build.VERSION_CODES.P) private val defaultNetworkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { diff --git a/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt b/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt index f8d3e66f..cf8e9c6b 100644 --- a/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt +++ b/mobile/src/main/java/com/github/shadowsocks/utils/Utils.kt @@ -8,6 +8,7 @@ import android.os.Build import android.support.annotation.AttrRes import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager +import android.support.v4.content.ContextCompat import android.support.v7.util.SortedList import android.util.TypedValue import com.github.shadowsocks.App.Companion.app @@ -50,6 +51,8 @@ fun thread(start: Boolean = true, isDaemon: Boolean = false, contextClassLoader: val URLConnection.responseLength: Long get() = if (Build.VERSION.SDK_INT >= 24) contentLengthLong else contentLength.toLong() +inline fun Context.systemService() = ContextCompat.getSystemService(this, T::class.java)!! + /** * Based on: https://stackoverflow.com/a/15656428/2245107 */ diff --git a/mobile/src/main/java/com/github/shadowsocks/widget/ShrinkUpwardBehavior.kt b/mobile/src/main/java/com/github/shadowsocks/widget/ShrinkUpwardBehavior.kt index 1fb4fde4..e650b2b8 100644 --- a/mobile/src/main/java/com/github/shadowsocks/widget/ShrinkUpwardBehavior.kt +++ b/mobile/src/main/java/com/github/shadowsocks/widget/ShrinkUpwardBehavior.kt @@ -29,12 +29,13 @@ import android.support.design.widget.SnackbarConsts import android.util.AttributeSet import android.view.View import android.view.accessibility.AccessibilityManager +import com.github.shadowsocks.utils.systemService /** * Full credits go to: https://stackoverflow.com/a/35904421/2245107 */ class ShrinkUpwardBehavior(context: Context, attrs: AttributeSet) : CoordinatorLayout.Behavior(context, attrs) { - private val accessibility = context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager + private val accessibility = context.systemService() override fun layoutDependsOn(parent: CoordinatorLayout, child: View, dependency: View): Boolean = dependency is Snackbar.SnackbarLayout