tinker.net.dongliu.apk.parser.bean.AttributeValues Maven / Gradle / Ivy
The newest version!
package tinker.net.dongliu.apk.parser.bean;
import tinker.net.dongliu.apk.parser.utils.Utils;
import java.util.ArrayList;
import java.util.List;
/**
* attribute value constant
*
* @author Liu Dong
*/
public class AttributeValues {
// Activity constants begin. see:
// http://developer.android.com/reference/android/content/pm/ActivityInfo.html
// http://developer.android.com/guide/topics/manifest/activity-element.html
public static String getScreenOrientation(int value) {
switch (value) {
case 0x00000003:
return "behind";
case 0x0000000a:
return "fullSensor";
case 0x0000000d:
return "fullUser";
case 0x00000000:
return "landscape";
case 0x0000000e:
return "locked";
case 0x00000005:
return "nosensor";
case 0x00000001:
return "portrait";
case 0x00000008:
return "reverseLandscape";
case 0x00000009:
return "reversePortrait";
case 0x00000004:
return "sensor";
case 0x00000006:
return "sensorLandscape";
case 0x00000007:
return "sensorPortrait";
case 0xffffffff:
return "unspecified";
case 0x00000002:
return "user";
case 0x0000000b:
return "userLandscape";
case 0x0000000c:
return "userPortrait";
default:
return "ScreenOrientation:" + Integer.toHexString(value);
}
}
public static String getLaunchMode(int value) {
switch (value) {
case 0x00000000:
return "standard";
case 0x00000001:
return "singleTop";
case 0x00000002:
return "singleTask";
case 0x00000003:
return "singleInstance";
default:
return "LaunchMode:" + Integer.toHexString(value);
}
}
public static String getConfigChanges(int value) {
List list = new ArrayList<>();
if ((value & 0x00001000) != 0) {
list.add("density");
} else if ((value & 0x40000000) != 0) {
list.add("fontScale");
} else if ((value & 0x00000010) != 0) {
list.add("keyboard");
} else if ((value & 0x00000020) != 0) {
list.add("keyboardHidden");
} else if ((value & 0x00002000) != 0) {
list.add("direction");
} else if ((value & 0x00000004) != 0) {
list.add("locale");
} else if ((value & 0x00000001) != 0) {
list.add("mcc");
} else if ((value & 0x00000002) != 0) {
list.add("mnc");
} else if ((value & 0x00000040) != 0) {
list.add("navigation");
} else if ((value & 0x00000080) != 0) {
list.add("orientation");
} else if ((value & 0x00000100) != 0) {
list.add("screenLayout");
} else if ((value & 0x00000400) != 0) {
list.add("screenSize");
} else if ((value & 0x00000800) != 0) {
list.add("smallestScreenSize");
} else if ((value & 0x00000008) != 0) {
list.add("touchscreen");
} else if ((value & 0x00000200) != 0) {
list.add("uiMode");
}
return Utils.join(list, "|");
}
public static String getWindowSoftInputMode(int value) {
int adjust = value & 0x000000f0;
int state = value & 0x0000000f;
List list = new ArrayList<>(2);
switch (adjust) {
case 0x00000030:
list.add("adjustNothing");
break;
case 0x00000020:
list.add("adjustPan");
break;
case 0x00000010:
list.add("adjustResize");
break;
case 0x00000000:
//levels.add("adjustUnspecified");
break;
default:
list.add("WindowInputModeAdjust:" + Integer.toHexString(adjust));
}
switch (state) {
case 0x00000003:
list.add("stateAlwaysHidden");
break;
case 0x00000005:
list.add("stateAlwaysVisible");
break;
case 0x00000002:
list.add("stateHidden");
break;
case 0x00000001:
list.add("stateUnchanged");
break;
case 0x00000004:
list.add("stateVisible");
break;
case 0x00000000:
//levels.add("stateUnspecified");
break;
default:
list.add("WindowInputModeState:" + Integer.toHexString(state));
}
return Utils.join(list, "|");
//isForwardNavigation(0x00000100),
//mode_changed(0x00000200),
}
//http://developer.android.com/reference/android/content/pm/PermissionInfo.html
public static String getProtectionLevel(int value) {
List levels = new ArrayList<>(3);
if ((value & 0x10) != 0) {
value = value ^ 0x10;
levels.add("system");
}
if ((value & 0x20) != 0) {
value = value ^ 0x20;
levels.add("development");
}
switch (value) {
case 0:
levels.add("normal");
break;
case 1:
levels.add("dangerous");
break;
case 2:
levels.add("signature");
break;
case 3:
levels.add("signatureOrSystem");
break;
default:
levels.add("ProtectionLevel:" + Integer.toHexString(value));
}
return Utils.join(levels, "|");
}
// Activity constants end
/**
* get Installation string values from int
*/
public static String getInstallLocation(int value) {
switch (value) {
case 0:
return "auto";
case 1:
return "internalOnly";
case 2:
return "preferExternal";
default:
return "installLocation:" + Integer.toHexString(value);
}
}
}