am 72eb0aca: Merge change 5483 into donut

Merge commit '72eb0acad5cffc57ce5006f6deab29ee259e461e'

* commit '72eb0acad5cffc57ce5006f6deab29ee259e461e':
  Expand support for different screen sizes.
This commit is contained in:
Android (Google) Code Review
2009-06-29 16:37:17 -07:00
committed by The Android Open Source Project
26 changed files with 603 additions and 102 deletions

View File

@ -331,6 +331,9 @@ enum {
TARGET_SDK_VERSION_ATTR = 0x01010270,
TEST_ONLY_ATTR = 0x01010272,
DENSITY_ATTR = 0x0101026c,
SMALL_SCREEN_ATTR = 0x01010284,
NORMAL_SCREEN_ATTR = 0x01010285,
LARGE_SCREEN_ATTR = 0x01010286,
};
const char *getComponentName(String8 &pkgName, String8 &componentName) {
@ -501,6 +504,10 @@ int doDump(Bundle* bundle)
bool isLauncherActivity = false;
bool withinApplication = false;
bool withinReceiver = false;
int targetSdk = 0;
int smallScreen = 1;
int normalScreen = 1;
int largeScreen = 1;
String8 pkg;
String8 activityName;
String8 activityLabel;
@ -574,8 +581,10 @@ int doDump(Bundle* bundle)
error.string());
goto bail;
}
if (name == "Donut") targetSdk = 4;
printf("sdkVersion:'%s'\n", name.string());
} else if (code != -1) {
targetSdk = code;
printf("sdkVersion:'%d'\n", code);
}
code = getIntegerAttribute(tree, TARGET_SDK_VERSION_ATTR, &error);
@ -587,8 +596,12 @@ int doDump(Bundle* bundle)
error.string());
goto bail;
}
if (name == "Donut" && targetSdk < 4) targetSdk = 4;
printf("targetSdkVersion:'%s'\n", name.string());
} else if (code != -1) {
if (targetSdk < code) {
targetSdk = code;
}
printf("targetSdkVersion:'%d'\n", code);
}
} else if (tag == "uses-configuration") {
@ -627,6 +640,13 @@ int doDump(Bundle* bundle)
goto bail;
}
printf("supports-density:'%d'\n", dens);
} else if (tag == "supports-screens") {
smallScreen = getIntegerAttribute(tree,
SMALL_SCREEN_ATTR, NULL, 1);
normalScreen = getIntegerAttribute(tree,
NORMAL_SCREEN_ATTR, NULL, 1);
largeScreen = getIntegerAttribute(tree,
LARGE_SCREEN_ATTR, NULL, 1);
}
} else if (depth == 3 && withinApplication) {
withinActivity = false;
@ -735,6 +755,25 @@ int doDump(Bundle* bundle)
}
}
// Determine default values for any unspecified screen sizes,
// based on the target SDK of the package. As of 4 (donut)
// the screen size support was introduced, so all default to
// enabled.
if (smallScreen > 0) {
smallScreen = targetSdk >= 4 ? -1 : 0;
}
if (normalScreen > 0) {
normalScreen = -1;
}
if (largeScreen > 0) {
largeScreen = targetSdk >= 4 ? -1 : 0;
}
printf("supports-screens:");
if (smallScreen != 0) printf(" 'small'");
if (normalScreen != 0) printf(" 'normal'");
if (largeScreen != 0) printf(" 'large'");
printf("\n");
printf("locales:");
Vector<String8> locales;
res.getLocales(&locales);