@@ -19,27 +19,32 @@ import net.imknown.android.forefrontinfo.base.extension.formatToLocalZonedDateti
1919import net.imknown.android.forefrontinfo.base.extension.fullMessage
2020import net.imknown.android.forefrontinfo.ui.base.list.MyModel
2121import net.imknown.android.forefrontinfo.ui.base.list.toColoredMyModel
22- import net.imknown.android.forefrontinfo.ui.common.getAndroidApiLevel
23- import net.imknown.android.forefrontinfo.ui.common.getAndroidVersionName
22+ import net.imknown.android.forefrontinfo.ui.common.getAndroidApiLevelMinor
23+ import net.imknown.android.forefrontinfo.ui.common.getAndroidDessertPreview
2424import net.imknown.android.forefrontinfo.ui.common.getBooleanProperty
25+ import net.imknown.android.forefrontinfo.ui.common.getSdkExtension
2526import net.imknown.android.forefrontinfo.ui.common.getShellResult
2627import net.imknown.android.forefrontinfo.ui.common.getStringProperty
2728import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid10
2829import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid11
2930import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid12
3031import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid13
32+ import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid16
3133import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid6
3234import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid7
3335import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid8
3436import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid9
3537import net.imknown.android.forefrontinfo.ui.common.isGoEdition
3638import net.imknown.android.forefrontinfo.ui.common.isLatestPreviewAndroid
3739import net.imknown.android.forefrontinfo.ui.common.isLatestStableAndroid
38- import net.imknown.android.forefrontinfo.ui.common.isPreviewAndroid
40+ import net.imknown.android.forefrontinfo.ui.common.isStableAndroid
3941import net.imknown.android.forefrontinfo.ui.common.isSupportedByUpstreamAndroid
42+ import net.imknown.android.forefrontinfo.ui.common.sdkInt
43+ import net.imknown.android.forefrontinfo.ui.common.sdkIntFull
4044import net.imknown.android.forefrontinfo.ui.home.datasource.AndroidDataSource
4145import net.imknown.android.forefrontinfo.ui.home.datasource.LldDataSource
4246import net.imknown.android.forefrontinfo.ui.home.datasource.MountDataSource
47+ import net.imknown.android.forefrontinfo.ui.home.model.EXTENSION_NONE
4348import net.imknown.android.forefrontinfo.ui.home.model.Lld
4449import net.imknown.android.forefrontinfo.ui.settings.datasource.AppInfoDataSource
4550import java.io.File
@@ -76,49 +81,64 @@ class HomeRepository(
7681
7782 fun detectAndroid (lld : Lld ): MyModel {
7883 // region [Mine]
79- var myAndroidVersionName = getAndroidVersionName()
84+ val myApiFull = if (isAtLeastStableAndroid16()) {
85+ " $sdkInt .${getAndroidApiLevelMinor(sdkIntFull)} "
86+ } else {
87+ sdkInt.toString()
88+ }
89+
90+ var myNameAndDessert = if (isStableAndroid()) {
91+ val dessert = lld.android.known.find {
92+ it.api.toInt() == sdkInt
93+ }?.name
94+ ? : MyApplication .getMyString(android.R .string.unknownName)
95+ Build .VERSION .RELEASE + " , " + dessert
96+ } else {
97+ val android = lld.android.known.find {
98+ it.apiFull == myApiFull
99+ }
100+ if (android != null ) {
101+ val preview = MyApplication .getMyString(R .string.android_info_preview)
102+ android.version + " $preview , " + android.name
103+ } else {
104+ getAndroidDessertPreview()
105+ }
106+ }
80107 if (MyApplication .instance.isGoEdition()) {
81- myAndroidVersionName + = " (Go)"
108+ myNameAndDessert + = " (Go)"
109+ }
110+
111+ var mine = MyApplication .getMyString(R .string.android_info, myNameAndDessert, myApiFull)
112+
113+ var myExtension = EXTENSION_NONE
114+ if (isAtLeastStableAndroid11()) {
115+ myExtension = getSdkExtension(Build .VERSION .SDK_INT )
116+ mine + = " \n " + MyApplication .getMyString(R .string.android_info_sdk_extension,myExtension)
82117 }
83- val mine = MyApplication .getMyString(R .string.android_info, myAndroidVersionName, getAndroidApiLevel())
84118 // endregion [Mine]
85119
86- // region [LatestStable]
87- val stable = lld.android.stable
88- val latestStable = MyApplication .getMyString(R .string.android_info, stable.version, stable.api)
89- // endregion [LatestStable]
90-
91- // region [LowestSupport]
92- val support = lld.android.support
93- val lowestSupport = MyApplication .getMyString(R .string.android_info, support.version, support.api)
94- // endregion [LowestSupport]
95-
96- // region [Beta]
97- val lldStablePreview = lld.android.stablePreview
98- val stablePreviewVersion = lldStablePreview.version
99- val stablePreviewApi = lldStablePreview.api
100- val stablePreview = MyApplication .getMyString(R .string.android_info, stablePreviewVersion, stablePreviewApi)
101- // endregion [Beta]
102-
103- // region [Canary]
104- val lldPreview = lld.android.preview
105- val previewVersion = lldPreview.version
106- val previewApi = lldPreview.api
107- val latestPreview = MyApplication .getMyString(R .string.android_info, previewVersion, previewApi)
108- // endregion [Canary]
109-
110- // region [LatestInternal]
111- val internal = lld.android.internal
112- val latestInternal = MyApplication .getMyString(R .string.android_info, internal.version, internal.api)
113- // endregion [LatestInternal]
120+ fun oneLine (android : Lld .Androids .Android ) =
121+ MyApplication .getMyString(R .string.android_info, android.version, android.apiFull)
122+
123+ val lldAndroid = lld.android
124+
125+ var latestStable = oneLine(lldAndroid.stable)
126+ if (isAtLeastStableAndroid11()) {
127+ latestStable + = " \n " + MyApplication .getMyString(R .string.android_info_sdk_extension,lldAndroid.stable.extension) + " \n "
128+ }
129+ val lowestSupport = oneLine(lldAndroid.support)
130+ val stablePreview = oneLine(lldAndroid.stablePreview) // Beta
131+ val latestPreview = oneLine(lldAndroid.preview) // Canary
132+ val latestInternal = oneLine(lldAndroid.internal)
133+
134+ val infoDetailArgs = arrayOf(mine, latestStable, lowestSupport, stablePreview, latestPreview, latestInternal)
114135
115136 @AttrRes val color = when {
116- isLatestStableAndroid(lld) || isLatestPreviewAndroid(lld) -> R .attr.colorNoProblem
137+ ( isLatestStableAndroid(lld) || isLatestPreviewAndroid(lld)) && myExtension >= lldAndroid.stable.extension -> R .attr.colorNoProblem
117138 isSupportedByUpstreamAndroid(lld) -> R .attr.colorWaring
118139 else -> R .attr.colorCritical
119140 }
120141
121- val infoDetailArgs = arrayOf(mine, latestStable, lowestSupport, stablePreview, latestPreview, latestInternal)
122142 return toColoredMyModel(
123143 MyApplication .getMyString(R .string.android_info_title),
124144 MyApplication .getMyString(R .string.android_info_detail, * infoDetailArgs),
@@ -1005,9 +1025,7 @@ class HomeRepository(
10051025 }
10061026 var systemApkList = installedApplications.filter {
10071027 val systemFlags = it.flags and (ApplicationInfo .FLAG_UPDATED_SYSTEM_APP or ApplicationInfo .FLAG_SYSTEM )
1008- (systemFlags > 0 ) && (it.targetSdkVersion < Build .VERSION .SDK_INT
1009- || (isPreviewAndroid() && it.targetSdkVersion == Build .VERSION .SDK_INT )
1010- )
1028+ (systemFlags > 0 ) && (it.targetSdkVersion < sdkInt)
10111029 }
10121030
10131031 var result = MyApplication .getMyString(
0 commit comments