summaryrefslogtreecommitdiffstats
path: root/core/java/android/app
diff options
context:
space:
mode:
authorJulia Reynolds <juliacr@google.com>2015-04-20 16:42:54 -0400
committerJulia Reynolds <juliacr@google.com>2015-04-27 12:57:15 -0400
commit13c58bacc8f1ff35bb24ba19069bab8a41aabf68 (patch)
tree2b0774ae106086381d7884929124f226f6d91589 /core/java/android/app
parent28b5b1444965fcdb471a8c2ff09f6f2eb53b337b (diff)
downloadframeworks_base-13c58bacc8f1ff35bb24ba19069bab8a41aabf68.zip
frameworks_base-13c58bacc8f1ff35bb24ba19069bab8a41aabf68.tar.gz
frameworks_base-13c58bacc8f1ff35bb24ba19069bab8a41aabf68.tar.bz2
Allow device initializers to set a preferred setup activity.
This activity will launch by default on device reboot or user switch during user initialization, even if there are higher priority 'home' activities. Bug: 20223050 Change-Id: I335aeb010a1ae5db07a4343d26e160c74bd299e1
Diffstat (limited to 'core/java/android/app')
-rw-r--r--core/java/android/app/ActivityManagerNative.java23
-rw-r--r--core/java/android/app/IActivityManager.java3
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java17
-rw-r--r--core/java/android/app/admin/IDevicePolicyManager.aidl2
4 files changed, 45 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index b11c509..a71a258 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -2521,6 +2521,15 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
return true;
}
+ case UPDATE_PREFERRED_SETUP_ACTIVITY_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ ComponentName preferredActivity = ComponentName.readFromParcel(data);
+ int userId = data.readInt();
+ updatePreferredSetupActivity(preferredActivity, userId);
+ reply.writeNoException();
+ return true;
+ }
+
case GET_PACKAGE_PROCESS_STATE_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
String pkg = data.readString();
@@ -5821,6 +5830,20 @@ class ActivityManagerProxy implements IActivityManager
}
@Override
+ public void updatePreferredSetupActivity(ComponentName preferredActivity, int userId)
+ throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ ComponentName.writeToParcel(preferredActivity, data);
+ data.writeInt(userId);
+ mRemote.transact(UPDATE_PREFERRED_SETUP_ACTIVITY_TRANSACTION, data, reply, 0);
+ reply.readException();
+ data.recycle();
+ reply.recycle();
+ }
+
+ @Override
public int getPackageProcessState(String packageName) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 00558fe..5829fbe 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -496,6 +496,8 @@ public interface IActivityManager extends IInterface {
throws RemoteException;
public void updateLockTaskPackages(int userId, String[] packages) throws RemoteException;
public void updateDeviceOwner(String packageName) throws RemoteException;
+ public void updatePreferredSetupActivity(ComponentName preferredActivity, int userId)
+ throws RemoteException;
public int getPackageProcessState(String packageName) throws RemoteException;
@@ -839,4 +841,5 @@ public interface IActivityManager extends IInterface {
int GET_PACKAGE_PROCESS_STATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+293;
int SHOW_LOCK_TASK_ESCAPE_MESSAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+294;
int UPDATE_DEVICE_OWNER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+295;
+ int UPDATE_PREFERRED_SETUP_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+296;
}
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 47133d4..ed814c3 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -4325,4 +4325,21 @@ public class DevicePolicyManager {
}
}
}
+
+ /**
+ * Called by a device initializer to set the activity to be launched on device boot or after a
+ * user switch during user setup. This activity will be started regardless of the priority of
+ * other 'home' activities. Once user setup is complete, the preferred setup activity will be
+ * ignored.
+ *
+ * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
+ * @param activity The Activity to be started by default during user setup.
+ */
+ public void setPreferredSetupActivity(ComponentName admin, ComponentName activity) {
+ try {
+ mService.setPreferredSetupActivity(admin, activity);
+ } catch (RemoteException re) {
+ Log.w(TAG, "Failed talking with device policy service", re);
+ }
+ }
}
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 087fc88..a678c51 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -216,6 +216,8 @@ interface IDevicePolicyManager {
String getDeviceInitializer();
ComponentName getDeviceInitializerComponent();
+ void setPreferredSetupActivity(in ComponentName admin, in ComponentName activity);
+
void setUserIcon(in ComponentName admin, in Bitmap icon);
void sendDeviceInitializerStatus(int statusCode, String description);