Fix fake targetSdkVersion

The ApplicationInfo instance is reused, so we can't change its
targetSdkVersion without affecting subsequent usage.
This commit is contained in:
Christopher Eby 2012-03-11 09:52:30 -05:00
parent 4669b8ea37
commit 95debe778b

View File

@ -154,6 +154,10 @@ public class LibraryActivity
* If true, return target GINGERBREAD from getApplicationInfo().
*/
boolean mFakeTarget;
/**
* ApplicationInfo with targetSdkVersion set to Gingerbread.
*/
private ApplicationInfo mFakeInfo;
@Override
public void onCreate(Bundle state)
@ -1101,9 +1105,16 @@ public class LibraryActivity
@Override
public ApplicationInfo getApplicationInfo()
{
ApplicationInfo info = super.getApplicationInfo();
ApplicationInfo info;
if (mFakeTarget) {
info.targetSdkVersion = Build.VERSION_CODES.GINGERBREAD;
info = mFakeInfo;
if (info == null) {
info = new ApplicationInfo(super.getApplicationInfo());
info.targetSdkVersion = Build.VERSION_CODES.GINGERBREAD;
mFakeInfo = info;
}
} else {
info = super.getApplicationInfo();
}
return info;
}