买了个新手机,应用又崩溃了,连上电脑看catlog,报错:java.lang.ArrayIndexOutOfBoundsException。
java
String APV[] = new String[] {
"",
"Android 1.0 , BASE, 200809",
"Android 1.1 , BASE_1_1, 200902",
"Android 1.5 , CUPCAKE, 200904",
"Android 1.6 , DONUT, 200909",
"Android 2.0 , ECLAIR, 200910",
"Android 2.0.1 , ECLAIR_0_1, 200912",
"Android 2.1.X , ECLAIR MR1, 201001",
"Android 2.2.x , FROYO, 201005",
"Android 2.3 / 2.3.1 / 2.3.2, GINGERBREAD, 201012",
"Android 2.3.3 / 2.3.4 , GINGERBREAD MR1, 201102",
"Android 3.0.X , HONEYCOMB, 201102",
"Android 3.1.X , HONEYCOMB MR1, 201105",
"Android 3.2 , HONEYCOMB MR2, 201107",
"Android 4.0 / 4.0.1 / 4.0.2, ICE CREAM SANDWICH, 201110",
"Android 4.0.3 / 4.0.4, ICE CREAM SANDWICH MR1, 201112",
"Android 4.1 / 4.1.1, JELLY BEAN, 201207",
"Android 4.2 / 4.2.2, JELLY BEAN MR1, 201211",
"Android 4.3, JELLY BEAN MR2, 201307",
"Android 4.4, KITKAT, 201310",
"Android 4.4W, KITKAT_WATCH, 201406",
"Android 5.0, Lollipop , 201411",
"Android 5.1, Lollipop MR1, 201503",
"Android 6.0, Marshmallow, 201510",
"Android 7.0, Nougat, 201608",
"Android 7.1.1, Nougat, 201610",
"Android 8.0, Oreo, 201708",
"Android 8.1, Oreo MR1, 201712",
"Android 9.0, Pie, 201808",
"Android 10.0, Q, 201909",
"Android 11, Red Velvet Cake, 20200909",
"Android 12, Snow Cone, 20211005"
};
String s = APV[android.os.Build.VERSION.SDK_INT];
android.os.Build.VERSION.SDK_INT,3年多前的旧手机=31,新手机=36,超过范围直接崩溃。
使用Map取不到值="null",不会崩溃。
java
HashMap<Integer, String> map_APV;
map_APV = new HashMap<>();
for (int i=0; i<APV.length; i++) {
map_APV.put(i, APV[i]);
}
String s = map_APV.get(android.os.Build.VERSION.SDK_INT);