am a5f88510
: am 2969b511
: Merge "Add new supports-screen API to set maximum allowed size." into honeycomb-mr2
* commit 'a5f8851019605be26dd9a628280092e27f8a5f31': Add new supports-screen API to set maximum allowed size.
This commit is contained in:
@ -5889,6 +5889,17 @@
|
|||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
</field>
|
</field>
|
||||||
|
<field name="largestWidthLimitDp"
|
||||||
|
type="int"
|
||||||
|
transient="false"
|
||||||
|
volatile="false"
|
||||||
|
value="16843622"
|
||||||
|
static="true"
|
||||||
|
final="true"
|
||||||
|
deprecated="not deprecated"
|
||||||
|
visibility="public"
|
||||||
|
>
|
||||||
|
</field>
|
||||||
<field name="launchMode"
|
<field name="launchMode"
|
||||||
type="int"
|
type="int"
|
||||||
transient="false"
|
transient="false"
|
||||||
@ -58742,6 +58753,16 @@
|
|||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
</field>
|
</field>
|
||||||
|
<field name="largestWidthLimitDp"
|
||||||
|
type="int"
|
||||||
|
transient="false"
|
||||||
|
volatile="false"
|
||||||
|
static="false"
|
||||||
|
final="false"
|
||||||
|
deprecated="not deprecated"
|
||||||
|
visibility="public"
|
||||||
|
>
|
||||||
|
</field>
|
||||||
<field name="manageSpaceActivityName"
|
<field name="manageSpaceActivityName"
|
||||||
type="java.lang.String"
|
type="java.lang.String"
|
||||||
transient="false"
|
transient="false"
|
||||||
|
@ -336,6 +336,14 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public int compatibleWidthLimitDp = 0;
|
public int compatibleWidthLimitDp = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum smallest screen width the application will work on. If 0,
|
||||||
|
* nothing has been specified. Comes from
|
||||||
|
* {@link android.R.styleable#AndroidManifestSupportsScreens_largestWidthLimitDp
|
||||||
|
* android:largestWidthLimitDp} attribute of the <supports-screens> tag.
|
||||||
|
*/
|
||||||
|
public int largestWidthLimitDp = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Full path to the location of this package.
|
* Full path to the location of this package.
|
||||||
*/
|
*/
|
||||||
@ -418,7 +426,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
|||||||
pw.println(prefix + "uid=" + uid + " flags=0x" + Integer.toHexString(flags)
|
pw.println(prefix + "uid=" + uid + " flags=0x" + Integer.toHexString(flags)
|
||||||
+ " theme=0x" + Integer.toHexString(theme));
|
+ " theme=0x" + Integer.toHexString(theme));
|
||||||
pw.println(prefix + "requiresSmallestWidthDp=" + requiresSmallestWidthDp
|
pw.println(prefix + "requiresSmallestWidthDp=" + requiresSmallestWidthDp
|
||||||
+ " compatibleWidthLimitDp=" + compatibleWidthLimitDp);
|
+ " compatibleWidthLimitDp=" + compatibleWidthLimitDp
|
||||||
|
+ " largestWidthLimitDp=" + largestWidthLimitDp);
|
||||||
pw.println(prefix + "sourceDir=" + sourceDir);
|
pw.println(prefix + "sourceDir=" + sourceDir);
|
||||||
if (sourceDir == null) {
|
if (sourceDir == null) {
|
||||||
if (publicSourceDir != null) {
|
if (publicSourceDir != null) {
|
||||||
@ -480,6 +489,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
|||||||
flags = orig.flags;
|
flags = orig.flags;
|
||||||
requiresSmallestWidthDp = orig.requiresSmallestWidthDp;
|
requiresSmallestWidthDp = orig.requiresSmallestWidthDp;
|
||||||
compatibleWidthLimitDp = orig.compatibleWidthLimitDp;
|
compatibleWidthLimitDp = orig.compatibleWidthLimitDp;
|
||||||
|
largestWidthLimitDp = orig.largestWidthLimitDp;
|
||||||
sourceDir = orig.sourceDir;
|
sourceDir = orig.sourceDir;
|
||||||
publicSourceDir = orig.publicSourceDir;
|
publicSourceDir = orig.publicSourceDir;
|
||||||
nativeLibraryDir = orig.nativeLibraryDir;
|
nativeLibraryDir = orig.nativeLibraryDir;
|
||||||
@ -515,6 +525,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
|||||||
dest.writeInt(flags);
|
dest.writeInt(flags);
|
||||||
dest.writeInt(requiresSmallestWidthDp);
|
dest.writeInt(requiresSmallestWidthDp);
|
||||||
dest.writeInt(compatibleWidthLimitDp);
|
dest.writeInt(compatibleWidthLimitDp);
|
||||||
|
dest.writeInt(largestWidthLimitDp);
|
||||||
dest.writeString(sourceDir);
|
dest.writeString(sourceDir);
|
||||||
dest.writeString(publicSourceDir);
|
dest.writeString(publicSourceDir);
|
||||||
dest.writeString(nativeLibraryDir);
|
dest.writeString(nativeLibraryDir);
|
||||||
@ -550,6 +561,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
|||||||
flags = source.readInt();
|
flags = source.readInt();
|
||||||
requiresSmallestWidthDp = source.readInt();
|
requiresSmallestWidthDp = source.readInt();
|
||||||
compatibleWidthLimitDp = source.readInt();
|
compatibleWidthLimitDp = source.readInt();
|
||||||
|
largestWidthLimitDp = source.readInt();
|
||||||
sourceDir = source.readString();
|
sourceDir = source.readString();
|
||||||
publicSourceDir = source.readString();
|
publicSourceDir = source.readString();
|
||||||
nativeLibraryDir = source.readString();
|
nativeLibraryDir = source.readString();
|
||||||
|
@ -999,6 +999,9 @@ public class PackageParser {
|
|||||||
pkg.applicationInfo.compatibleWidthLimitDp = sa.getInteger(
|
pkg.applicationInfo.compatibleWidthLimitDp = sa.getInteger(
|
||||||
com.android.internal.R.styleable.AndroidManifestSupportsScreens_compatibleWidthLimitDp,
|
com.android.internal.R.styleable.AndroidManifestSupportsScreens_compatibleWidthLimitDp,
|
||||||
0);
|
0);
|
||||||
|
pkg.applicationInfo.largestWidthLimitDp = sa.getInteger(
|
||||||
|
com.android.internal.R.styleable.AndroidManifestSupportsScreens_largestWidthLimitDp,
|
||||||
|
0);
|
||||||
|
|
||||||
// This is a trick to get a boolean and still able to detect
|
// This is a trick to get a boolean and still able to detect
|
||||||
// if a value was actually set.
|
// if a value was actually set.
|
||||||
|
@ -96,21 +96,42 @@ public class CompatibilityInfo implements Parcelable {
|
|||||||
boolean forceCompat) {
|
boolean forceCompat) {
|
||||||
int compatFlags = 0;
|
int compatFlags = 0;
|
||||||
|
|
||||||
if (appInfo.requiresSmallestWidthDp != 0 || appInfo.compatibleWidthLimitDp != 0) {
|
if (appInfo.requiresSmallestWidthDp != 0 || appInfo.compatibleWidthLimitDp != 0
|
||||||
|
|| appInfo.largestWidthLimitDp != 0) {
|
||||||
// New style screen requirements spec.
|
// New style screen requirements spec.
|
||||||
int required = appInfo.requiresSmallestWidthDp != 0
|
int required = appInfo.requiresSmallestWidthDp != 0
|
||||||
? appInfo.requiresSmallestWidthDp
|
? appInfo.requiresSmallestWidthDp
|
||||||
: appInfo.compatibleWidthLimitDp;
|
: appInfo.compatibleWidthLimitDp;
|
||||||
|
if (required == 0) {
|
||||||
|
required = appInfo.largestWidthLimitDp;
|
||||||
|
}
|
||||||
int compat = appInfo.compatibleWidthLimitDp != 0
|
int compat = appInfo.compatibleWidthLimitDp != 0
|
||||||
? appInfo.compatibleWidthLimitDp
|
? appInfo.compatibleWidthLimitDp : required;
|
||||||
: appInfo.requiresSmallestWidthDp;
|
|
||||||
if (compat < required) {
|
if (compat < required) {
|
||||||
compat = required;
|
compat = required;
|
||||||
}
|
}
|
||||||
|
int largest = appInfo.largestWidthLimitDp;
|
||||||
|
|
||||||
if (compat >= sw) {
|
if (required > DEFAULT_NORMAL_SHORT_DIMENSION) {
|
||||||
|
// For now -- if they require a size larger than the only
|
||||||
|
// size we can do in compatibility mode, then don't ever
|
||||||
|
// allow the app to go in to compat mode. Trying to run
|
||||||
|
// it at a smaller size it can handle will make it far more
|
||||||
|
// broken than running at a larger size than it wants or
|
||||||
|
// thinks it can handle.
|
||||||
|
compatFlags |= NEVER_NEEDS_COMPAT;
|
||||||
|
} else if (largest != 0 && sw > largest) {
|
||||||
|
// If the screen size is larger than the largest size the
|
||||||
|
// app thinks it can work with, then always force it in to
|
||||||
|
// compatibility mode.
|
||||||
|
compatFlags |= NEEDS_SCREEN_COMPAT | ALWAYS_NEEDS_COMPAT;
|
||||||
|
} else if (compat >= sw) {
|
||||||
|
// The screen size is something the app says it was designed
|
||||||
|
// for, so never do compatibility mode.
|
||||||
compatFlags |= NEVER_NEEDS_COMPAT;
|
compatFlags |= NEVER_NEEDS_COMPAT;
|
||||||
} else if (forceCompat) {
|
} else if (forceCompat) {
|
||||||
|
// The app may work better with or without compatibility mode.
|
||||||
|
// Let the user decide.
|
||||||
compatFlags |= NEEDS_SCREEN_COMPAT;
|
compatFlags |= NEEDS_SCREEN_COMPAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1035,6 +1035,17 @@
|
|||||||
used with this attribute are 320 for a phone screen, 600 for a
|
used with this attribute are 320 for a phone screen, 600 for a
|
||||||
7" tablet, and 720 for a 10" tablet. -->
|
7" tablet, and 720 for a 10" tablet. -->
|
||||||
<attr name="compatibleWidthLimitDp" format="integer" />
|
<attr name="compatibleWidthLimitDp" format="integer" />
|
||||||
|
<!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2},
|
||||||
|
this is the new way to specify the screens an application is
|
||||||
|
compatible with. This attribute provides the maximum
|
||||||
|
"smallest screen width" (as per the -swNNNdp resource configuration)
|
||||||
|
that the application can work well on. If this value is smaller than
|
||||||
|
the "smallest screen width" of the device it is running on, the
|
||||||
|
application will be forced in to screen compatibility mode with
|
||||||
|
no way for the user to turn it off. Currently the compatibility mode
|
||||||
|
only emulates phone screens, so even if this value is larger than 320
|
||||||
|
the width the app runs in will be a 320 phone dimension. -->
|
||||||
|
<attr name="largestWidthLimitDp" format="integer" />
|
||||||
<!-- Indicates whether the application supports smaller screen form-factors.
|
<!-- Indicates whether the application supports smaller screen form-factors.
|
||||||
A small screen is defined as one with a smaller aspect ratio than
|
A small screen is defined as one with a smaller aspect ratio than
|
||||||
the traditional HVGA screen; that is, for a portrait screen, less
|
the traditional HVGA screen; that is, for a portrait screen, less
|
||||||
|
@ -1656,4 +1656,5 @@
|
|||||||
<eat-comment />
|
<eat-comment />
|
||||||
<public type="attr" name="requiresSmallestWidthDp" id="0x01010364" />
|
<public type="attr" name="requiresSmallestWidthDp" id="0x01010364" />
|
||||||
<public type="attr" name="compatibleWidthLimitDp" />
|
<public type="attr" name="compatibleWidthLimitDp" />
|
||||||
|
<public type="attr" name="largestWidthLimitDp" />
|
||||||
</resources>
|
</resources>
|
||||||
|
Reference in New Issue
Block a user