Skip to content

Commit 26fd34b

Browse files
committed
Upgrade compileSDK to 30 and clean warnings
1 parent 5c81799 commit 26fd34b

File tree

21 files changed

+160
-248
lines changed

21 files changed

+160
-248
lines changed

android_project_common.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ ext {
3333

3434
versions = [
3535
// compile
36-
'compileSdk' : 29,
36+
'compileSdk' : 30,
3737

3838
// Android official support
3939
'kotlin' : '1.3.72',

archLib/src/main/java/me/ycdev/android/arch/activity/PreferenceBaseActivity.kt

Lines changed: 0 additions & 9 deletions
This file was deleted.

archLintRules/src/main/java/me/ycdev/android/arch/lint/base/WrapperDetectorBase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.android.tools.lint.detector.api.JavaContext
55
import com.intellij.psi.PsiMethod
66
import org.jetbrains.uast.UCallExpression
77
import org.jetbrains.uast.UElement
8-
import org.jetbrains.uast.getContainingClass
8+
import org.jetbrains.uast.getContainingUClass
99

1010
abstract class WrapperDetectorBase : Detector(), Detector.UastScanner {
1111
protected abstract val applicableMethods: List<String>
@@ -17,7 +17,7 @@ abstract class WrapperDetectorBase : Detector(), Detector.UastScanner {
1717

1818
override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
1919
val evaluator = context.evaluator
20-
val surroundingClass = node.getContainingClass()
20+
val surroundingClass = node.getContainingUClass()?.javaPsi
2121
if (surroundingClass == null) {
2222
println(
2323
"Fatal error in WrapperDetectorBase! Failed to get surrounding" +

archLintRulesTestDemo/src/main/java/me/ycdev/android/arch/demo/activity/LintGoodActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class LintGoodActivity : AppCompatBaseActivity() { // lint good
2020
// Handle action bar item clicks here. The action bar will
2121
// automatically handle clicks on the Home/Up button, so long
2222
// as you specify a parent activity in AndroidManifest.xml.
23-
val id = item.itemId
23+
item.itemId
2424

2525
return super.onOptionsItemSelected(item)
2626
}

archLintRulesTestDemo/src/main/java/me/ycdev/android/arch/demo/activity/LintViolationActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class LintViolationActivity : AppCompatActivity() { // lint violation
3131
// Handle action bar item clicks here. The action bar will
3232
// automatically handle clicks on the Home/Up button, so long
3333
// as you specify a parent activity in AndroidManifest.xml.
34-
val id = item.itemId
34+
item.itemId
3535

3636
sendBroadcast(Intent(TEST_ACTION)) // lint violation
3737

archLintRulesTestDemo/src/main/java/me/ycdev/android/arch/demo/wrapper/IntentHelperLintCase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ object IntentHelperLintCase {
4141
return intent.getBooleanExtra(key, defValue) // lint violation
4242
}
4343

44-
fun getBundleExtraBad(intent: Intent, key: String): Bundle {
44+
fun getBundleExtraBad(intent: Intent, key: String): Bundle? {
4545
return intent.getBundleExtra(key) // lint violation
4646
}
4747
}

baseLib/build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ dependencies {
3232
testImplementation deps.test.runner
3333
testImplementation deps.test.rules
3434
testImplementation deps.test.truth
35-
testImplementation deps.test.mockitoCore
36-
testImplementation deps.test.powermockMockito
37-
testImplementation deps.test.powermockJunit
35+
testImplementation deps.test.mockk
3836
testImplementation deps.test.robolectric
3937

4038
// Android Testing Support Library's runner and rules

baseLib/src/main/java/me/ycdev/android/lib/common/apps/AppInfo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ data class AppInfo(val pkgName: String) {
1111
var appName: String? = null
1212
var appIcon: Drawable? = null
1313
var versionName: String? = null
14-
var versionCode: Int = 0
14+
var versionCode: Long = 0
1515
var apkPath: String? = null
1616
var installTime: Long = 0
1717
var updateTime: Long = 0

baseLib/src/main/java/me/ycdev/android/lib/common/apps/AppsLoader.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import me.ycdev.android.lib.common.utils.MiscUtils
1414
import me.ycdev.android.lib.common.utils.PackageUtils
1515
import me.ycdev.android.lib.common.utils.StringUtils
1616

17+
@Suppress("unused")
1718
class AppsLoader private constructor(cxt: Context) {
1819
private val appContext: Context = cxt.applicationContext
1920
private val pm: PackageManager = cxt.packageManager
@@ -89,7 +90,12 @@ class AppsLoader private constructor(cxt: Context) {
8990
item.isUpdatedSysApp = aiFlag and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0
9091

9192
item.versionName = pkgInfo.versionName
92-
item.versionCode = pkgInfo.versionCode
93+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
94+
item.versionCode = pkgInfo.longVersionCode
95+
} else {
96+
@Suppress("DEPRECATION")
97+
item.versionCode = pkgInfo.versionCode.toLong()
98+
}
9399

94100
item.apkPath = pkgInfo.applicationInfo.sourceDir
95101
item.isDisabled = !PackageUtils.isPkgEnabled(appContext, pkgInfo.packageName)

baseLib/src/main/java/me/ycdev/android/lib/common/net/NetworkUtils.kt

Lines changed: 76 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package me.ycdev.android.lib.common.net
22

33
import android.content.Context
44
import android.net.ConnectivityManager
5-
import android.net.NetworkInfo
5+
import android.net.Network
6+
import android.net.NetworkCapabilities
7+
import android.os.Build
68
import android.telephony.TelephonyManager
79
import android.text.TextUtils
810
import androidx.annotation.IntDef
@@ -26,6 +28,7 @@ object NetworkUtils {
2628
const val NETWORK_TYPE_2G = 10
2729
const val NETWORK_TYPE_3G = 11
2830
const val NETWORK_TYPE_4G = 12
31+
const val NETWORK_TYPE_5G = 13
2932
const val NETWORK_TYPE_COMPANION_PROXY = 20
3033

3134
@Retention(AnnotationRetention.SOURCE)
@@ -36,40 +39,48 @@ object NetworkUtils {
3639
NETWORK_TYPE_2G,
3740
NETWORK_TYPE_3G,
3841
NETWORK_TYPE_4G,
42+
NETWORK_TYPE_5G,
3943
NETWORK_TYPE_COMPANION_PROXY
4044
)
4145
annotation class NetworkType
4246

43-
@Suppress("DEPRECATION")
4447
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
4548
fun dumpActiveNetworkInfo(cxt: Context): String {
46-
val info = getActiveNetworkInfo(cxt) ?: return "No active network"
47-
48-
val sb = StringBuilder()
49-
sb.append("type=").append(info.type)
50-
.append(", subType=").append(info.subtype)
51-
.append(", infoDump=").append(info)
52-
return sb.toString()
49+
val capabilities = getActiveNetworkCapabilities(cxt) ?: return "No active network"
50+
return capabilities.toString()
5351
}
5452

5553
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
56-
fun getActiveNetworkInfo(cxt: Context): NetworkInfo? {
57-
val cm = cxt.getSystemService(
58-
Context.CONNECTIVITY_SERVICE
59-
) as ConnectivityManager?
54+
fun getActiveNetwork(cxt: Context): Network? {
55+
val cm = cxt.getSystemService(ConnectivityManager::class.java)
6056
if (cm == null) {
6157
LibLogger.w(TAG, "failed to get connectivity service")
6258
return null
6359
}
6460

65-
var netInfo: NetworkInfo? = null
6661
try {
67-
netInfo = cm.activeNetworkInfo
62+
return cm.activeNetwork
6863
} catch (e: Exception) {
69-
LibLogger.w(TAG, "failed to get active network info", e)
64+
LibLogger.w(TAG, "failed to get active network", e)
65+
}
66+
return null
67+
}
68+
69+
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
70+
fun getActiveNetworkCapabilities(cxt: Context): NetworkCapabilities? {
71+
val cm = cxt.getSystemService(ConnectivityManager::class.java)
72+
if (cm == null) {
73+
LibLogger.w(TAG, "failed to get connectivity service")
74+
return null
7075
}
7176

72-
return netInfo
77+
try {
78+
val network = cm.activeNetwork ?: return null
79+
return cm.getNetworkCapabilities(network)
80+
} catch (e: Exception) {
81+
LibLogger.w(TAG, "failed to get active network", e)
82+
}
83+
return null
7384
}
7485

7586
/**
@@ -79,24 +90,20 @@ object NetworkUtils {
7990
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
8091
@NetworkType
8192
fun getNetworkType(cxt: Context): Int {
82-
val netInfo = getActiveNetworkInfo(cxt) ?: return NETWORK_TYPE_NONE
83-
84-
@Suppress("DEPRECATION")
85-
return getNetworkType(netInfo.type, netInfo.subtype)
93+
val capabilities = getActiveNetworkCapabilities(cxt) ?: return NETWORK_TYPE_NONE
94+
return getNetworkType(capabilities)
8695
}
8796

88-
@Suppress("DEPRECATION", "UNUSED_PARAMETER")
8997
@NetworkType
9098
@VisibleForTesting
91-
internal fun getNetworkType(type: Int, subType: Int): Int {
92-
if (type == ConnectivityManager.TYPE_WIFI ||
93-
type == ConnectivityManager.TYPE_WIMAX ||
94-
type == ConnectivityManager.TYPE_ETHERNET
99+
internal fun getNetworkType(capabilities: NetworkCapabilities): Int {
100+
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
101+
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
95102
) {
96103
return NETWORK_TYPE_WIFI
97-
} else if (type == ConnectivityManager.TYPE_MOBILE || type == ConnectivityManager.TYPE_MOBILE_MMS) {
104+
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
98105
return NETWORK_TYPE_MOBILE
99-
} else if (type == WEAR_OS_COMPANION_PROXY) {
106+
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH)) {
100107
// Wear OS
101108
return NETWORK_TYPE_COMPANION_PROXY
102109
}
@@ -105,49 +112,66 @@ object NetworkUtils {
105112

106113
/**
107114
* @return One of values [NETWORK_TYPE_2G], [NETWORK_TYPE_3G],
108-
* [NETWORK_TYPE_4G] or [NETWORK_TYPE_NONE]
115+
* [NETWORK_TYPE_4G], [NETWORK_TYPE_5G] or [NETWORK_TYPE_NONE]
109116
*/
110117
@NetworkType
111118
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
112119
fun getMobileNetworkType(cxt: Context): Int {
113-
// Code from android-5.1.1_r4:
114-
// frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
115-
// in NetworkControllerImpl#mapIconSets()
116-
val tm = cxt.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager?
120+
// #1 Code from android-5.1.1_r4:
121+
// frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
122+
// in NetworkControllerImpl#mapIconSets()
123+
// #2 Code from master (Android R):
124+
// frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
125+
// in MobileSignalController#mapIconSets()
126+
val tm = cxt.getSystemService(TelephonyManager::class.java)
117127
if (tm == null) {
118128
LibLogger.w(TAG, "failed to get telephony service")
119129
return NETWORK_TYPE_NONE
120130
}
121131

122132
val tmType: Int
123133
try {
124-
tmType = tm.networkType
134+
@Suppress("DEPRECATION")
135+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
136+
tmType = tm.dataNetworkType
137+
} else {
138+
tmType = tm.networkType
139+
}
125140
} catch (e: Exception) {
126141
LibLogger.w(TAG, "failed to get telephony network type", e)
127142
return NETWORK_TYPE_NONE
128143
}
129144

130-
when (tmType) {
131-
TelephonyManager.NETWORK_TYPE_UNKNOWN -> return NETWORK_TYPE_NONE
132-
133-
TelephonyManager.NETWORK_TYPE_LTE -> return NETWORK_TYPE_4G
134-
135-
TelephonyManager.NETWORK_TYPE_EVDO_0, TelephonyManager.NETWORK_TYPE_EVDO_A, TelephonyManager.NETWORK_TYPE_EVDO_B, TelephonyManager.NETWORK_TYPE_EHRPD, TelephonyManager.NETWORK_TYPE_UMTS ->
136-
// case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
137-
return NETWORK_TYPE_3G
138-
139-
TelephonyManager.NETWORK_TYPE_HSDPA, TelephonyManager.NETWORK_TYPE_HSUPA, TelephonyManager.NETWORK_TYPE_HSPA, TelephonyManager.NETWORK_TYPE_HSPAP -> return NETWORK_TYPE_3G // H
140-
141-
TelephonyManager.NETWORK_TYPE_GPRS, TelephonyManager.NETWORK_TYPE_EDGE, TelephonyManager.NETWORK_TYPE_CDMA, TelephonyManager.NETWORK_TYPE_1xRTT ->
142-
// case TelephonyManager.NETWORK_TYPE_GSM:
143-
return NETWORK_TYPE_2G
145+
return when (tmType) {
146+
TelephonyManager.NETWORK_TYPE_UNKNOWN -> NETWORK_TYPE_NONE
147+
TelephonyManager.NETWORK_TYPE_LTE -> NETWORK_TYPE_4G
148+
TelephonyManager.NETWORK_TYPE_NR -> NETWORK_TYPE_5G
149+
150+
TelephonyManager.NETWORK_TYPE_EVDO_0,
151+
TelephonyManager.NETWORK_TYPE_EVDO_A,
152+
TelephonyManager.NETWORK_TYPE_EVDO_B,
153+
TelephonyManager.NETWORK_TYPE_EHRPD,
154+
TelephonyManager.NETWORK_TYPE_TD_SCDMA,
155+
TelephonyManager.NETWORK_TYPE_UMTS -> NETWORK_TYPE_3G
156+
157+
TelephonyManager.NETWORK_TYPE_HSDPA,
158+
TelephonyManager.NETWORK_TYPE_HSUPA,
159+
TelephonyManager.NETWORK_TYPE_HSPA,
160+
TelephonyManager.NETWORK_TYPE_HSPAP -> NETWORK_TYPE_3G // H
161+
162+
TelephonyManager.NETWORK_TYPE_GPRS,
163+
TelephonyManager.NETWORK_TYPE_EDGE,
164+
TelephonyManager.NETWORK_TYPE_CDMA,
165+
TelephonyManager.NETWORK_TYPE_GSM,
166+
TelephonyManager.NETWORK_TYPE_1xRTT -> NETWORK_TYPE_2G
167+
168+
else -> NETWORK_TYPE_2G
144169
}
145-
return NETWORK_TYPE_2G
146170
}
147171

148172
/**
149173
* @return One of values [NETWORK_TYPE_WIFI], [NETWORK_TYPE_2G],
150-
* [NETWORK_TYPE_3G], [NETWORK_TYPE_4G] or [NETWORK_TYPE_NONE]
174+
* [NETWORK_TYPE_3G], [NETWORK_TYPE_4G], [NETWORK_TYPE_5G] or [NETWORK_TYPE_NONE]
151175
*/
152176
@RequiresPermission(
153177
allOf = [
@@ -169,8 +193,8 @@ object NetworkUtils {
169193
*/
170194
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
171195
fun isNetworkAvailable(cxt: Context): Boolean {
172-
val network = getActiveNetworkInfo(cxt)
173-
return network != null && network.isConnected
196+
val capabilities = getActiveNetworkCapabilities(cxt) ?: return false
197+
return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
174198
}
175199

176200
/**

0 commit comments

Comments
 (0)