New compat mode front end: UI and persistence.
Adds a really crappy UI for toggling compat mode.
Persists compat mode selection across boots.
Turns on compat mode by default for newly installed apps.
Change-Id: Idc83494397bd17c41450bc9e9a05e4386c509399
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 11e9975..4beb5cc 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1398,12 +1398,41 @@
return true;
}
+ case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
+ {
+ data.enforceInterface(IActivityManager.descriptor);
+ int mode = getFrontActivityScreenCompatMode();
+ reply.writeNoException();
+ reply.writeInt(mode);
+ return true;
+ }
+
+ case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
+ {
+ data.enforceInterface(IActivityManager.descriptor);
+ int mode = data.readInt();
+ setFrontActivityScreenCompatMode(mode);
+ reply.writeNoException();
+ reply.writeInt(mode);
+ return true;
+ }
+
+ case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
+ {
+ data.enforceInterface(IActivityManager.descriptor);
+ String pkg = data.readString();
+ int mode = getPackageScreenCompatMode(pkg);
+ reply.writeNoException();
+ reply.writeInt(mode);
+ return true;
+ }
+
case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
{
data.enforceInterface(IActivityManager.descriptor);
String pkg = data.readString();
- boolean enabled = data.readInt() != 0;
- setPackageScreenCompatMode(pkg, enabled);
+ int mode = data.readInt();
+ setPackageScreenCompatMode(pkg, mode);
reply.writeNoException();
return true;
}
@@ -3152,13 +3181,48 @@
return result;
}
- public void setPackageScreenCompatMode(String packageName, boolean compatEnabled)
+ public int getFrontActivityScreenCompatMode() throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
+ reply.readException();
+ int mode = reply.readInt();
+ reply.recycle();
+ data.recycle();
+ return mode;
+ }
+
+ public void setFrontActivityScreenCompatMode(int mode) throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ data.writeInt(mode);
+ mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
+ reply.readException();
+ reply.recycle();
+ data.recycle();
+ }
+
+ public int getPackageScreenCompatMode(String packageName) throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
+ reply.readException();
+ int mode = reply.readInt();
+ reply.recycle();
+ data.recycle();
+ return mode;
+ }
+
+ public void setPackageScreenCompatMode(String packageName, int mode)
throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeString(packageName);
- data.writeInt(compatEnabled ? 1 : 0);
+ data.writeInt(mode);
mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
reply.readException();
reply.recycle();