Expected Behavior
This was confirmed in the crash report of an app that uses KARTE SDK.
This appears to be a bug in the Android Platform.
refs: https://issuetracker.google.com/issues/175055271
So I would like you to use runCatching or something similar to prevent crashes from occurring.
Current Behavior
Android 11 crashes with a security exception when Connectivity.isOnlineNow is called.





Possible Solution
Steps to Reproduce
I tried running the following code on my Xperia 1 II (Android 11) , but the crash was not reproduced at hand.
val manager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
manager.getNetworkCapabilities(manager.activeNetwork)
?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false
SDK Version
Android Version
Build Environment
- Android Studio Version Arctic Fox | 2020.3.1
- Gradle Version 7.0.2
- Android Gradle Plugin Version 7.0.0
Context Details
- More than a dozen crash reports come up a day but I don't known user impact
Logs
Fatal Exception: java.lang.SecurityException: Package android does not belong to 10158
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities(IConnectivityManager.java:2456)
at android.net.ConnectivityManager.getNetworkCapabilities(ConnectivityManager.java:1385)
at io.karte.android.utilities.connectivity.Connectivity.isOnlineNow(Connectivity.java:50)
at io.karte.android.utilities.connectivity.Connectivity.isOnline(Connectivity.java:34)
at io.karte.android.tracking.queue.Dispatcher.dequeue(Dispatcher.java:104)
at io.karte.android.tracking.queue.Dispatcher.access$enqueue(Dispatcher.java:48)
at io.karte.android.tracking.queue.Dispatcher$push$2.invoke(Dispatcher.java:79)
at io.karte.android.tracking.queue.Dispatcher$push$2.invoke(Dispatcher.java:48)
at io.karte.android.tracking.queue.DispatcherKt$sam$java_lang_Runnable$0.run(DispatcherKt.java:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.os.HandlerThread.run(HandlerThread.java:67)
Possible Implementation
|
@RequiresApi(Build.VERSION_CODES.M) |
|
private fun isOnlineNow(context: Context): Boolean { |
|
val manager = |
|
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager |
|
return manager.getNetworkCapabilities(manager.activeNetwork) |
|
?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false |
|
} |
@RequiresApi(Build.VERSION_CODES.M)
private fun isOnlineNow(context: Context): Boolean {
return kotlin.runCatching {
val manager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
manager.getNetworkCapabilities(manager.activeNetwork)
?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
}.onFailure { e ->
Logger.e(LOG_TAG, "Failed to getNetworkCapabilities: $e")
}.getOrNull() ?: false
}
Expected Behavior
This was confirmed in the crash report of an app that uses KARTE SDK.
This appears to be a bug in the Android Platform.
refs: https://issuetracker.google.com/issues/175055271
So I would like you to use runCatching or something similar to prevent crashes from occurring.
Current Behavior
Android 11 crashes with a security exception when Connectivity.isOnlineNow is called.
Possible Solution
Steps to Reproduce
I tried running the following code on my Xperia 1 II (Android 11) , but the crash was not reproduced at hand.
SDK Version
Android Version
Build Environment
Context Details
Logs
Possible Implementation
karte-android-sdk/core/src/main/java/io/karte/android/utilities/connectivity/Connectivity.kt
Lines 47 to 53 in 1d65745