use of android.app.IActivityManager in project android_frameworks_base by crdroidandroid.
the class ActionUtils method switchToLastAppInternal.
private static boolean switchToLastAppInternal(Context context, int userId) throws RemoteException {
ActivityManager.RecentTaskInfo lastTask = getLastTask(context, userId);
if (lastTask == null || lastTask.id < 0) {
return false;
}
final String packageName = lastTask.baseIntent.getComponent().getPackageName();
final IActivityManager am = ActivityManagerNative.getDefault();
final ActivityOptions opts = ActivityOptions.makeCustomAnimation(context, com.android.internal.R.anim.last_app_in, com.android.internal.R.anim.last_app_out);
if (DEBUG)
Log.d(TAG, "switching to " + packageName);
am.moveTaskToFront(lastTask.id, ActivityManager.MOVE_TASK_NO_USER_ACTION, opts.toBundle());
return true;
}
use of android.app.IActivityManager in project android_frameworks_base by crdroidandroid.
the class SettingsHelper method setLocaleData.
/**
* Sets the locale specified. Input data is the byte representation of a
* BCP-47 language tag. For backwards compatibility, strings of the form
* {@code ll_CC} are also accepted, where {@code ll} is a two letter language
* code and {@code CC} is a two letter country code.
*
* @param data the locale string in bytes.
*/
void setLocaleData(byte[] data, int size) {
// Check if locale was set by the user:
Configuration conf = mContext.getResources().getConfiguration();
// Don't change if user set it in the SetupWizard
if (conf.userSetLocale)
return;
final String[] availableLocales = mContext.getAssets().getLocales();
// Replace "_" with "-" to deal with older backups.
String localeCode = new String(data, 0, size).replace('_', '-');
Locale loc = null;
for (int i = 0; i < availableLocales.length; i++) {
if (availableLocales[i].equals(localeCode)) {
loc = Locale.forLanguageTag(localeCode);
break;
}
}
// Couldn't find the saved locale in this version of the software
if (loc == null)
return;
try {
IActivityManager am = ActivityManagerNative.getDefault();
Configuration config = am.getConfiguration();
config.locale = loc;
// indicate this isn't some passing default - the user wants this remembered
config.userSetLocale = true;
am.updateConfiguration(config);
} catch (RemoteException e) {
// Intentionally left blank
}
}
use of android.app.IActivityManager in project android_frameworks_base by crdroidandroid.
the class UserManagerService method runList.
private int runList(PrintWriter pw) throws RemoteException {
final IActivityManager am = ActivityManagerNative.getDefault();
final List<UserInfo> users = getUsers(false);
if (users == null) {
pw.println("Error: couldn't get users");
return 1;
} else {
pw.println("Users:");
for (int i = 0; i < users.size(); i++) {
String running = am.isUserRunning(users.get(i).id, 0) ? " running" : "";
pw.println("\t" + users.get(i).toString() + running);
}
return 0;
}
}
use of android.app.IActivityManager in project android_frameworks_base by crdroidandroid.
the class OverlayManagerService method updateSelectedAssets.
private void updateSelectedAssets(final int userId, List<String> targetPackageNames) {
final PackageManagerInternal pm = LocalServices.getService(PackageManagerInternal.class);
final boolean updateFrameworkRes = targetPackageNames.contains("android");
if (updateFrameworkRes) {
targetPackageNames = pm.getTargetPackageNames(userId);
}
final Map<String, String[]> allPaths = new ArrayMap<>(targetPackageNames.size());
synchronized (mLock) {
final List<String> frameworkPaths = mImpl.onGetEnabledOverlayPaths("android", userId);
for (final String packageName : targetPackageNames) {
final List<String> paths = new ArrayList<>();
paths.addAll(frameworkPaths);
if (!"android".equals(packageName)) {
paths.addAll(mImpl.onGetEnabledOverlayPaths(packageName, userId));
}
allPaths.put(packageName, paths.isEmpty() ? null : paths.toArray(new String[paths.size()]));
}
}
for (String packageName : targetPackageNames) {
pm.setResourceDirs(userId, packageName, allPaths.get(packageName));
}
final IActivityManager am = ActivityManagerNative.getDefault();
try {
am.updateAssets(userId, targetPackageNames);
} catch (RemoteException e) {
// Intentionally left empty.
}
}
use of android.app.IActivityManager in project android_frameworks_base by crdroidandroid.
the class ShutdownThread method run.
/**
* Makes sure we handle the shutdown gracefully.
* Shuts off power regardless of radio and bluetooth state if the alloted time has passed.
*/
public void run() {
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// We don't allow apps to cancel this, so ignore the result.
actionDone();
}
};
/*
* Write a system property in case the system_server reboots before we
* get to the actual hardware restart. If that happens, we'll retry at
* the beginning of the SystemServer startup.
*/
{
String reason = (mReboot ? "1" : "0") + (mReason != null ? mReason : "");
SystemProperties.set(SHUTDOWN_ACTION_PROPERTY, reason);
}
/*
* If we are rebooting into safe mode, write a system property
* indicating so.
*/
if (mRebootSafeMode) {
SystemProperties.set(REBOOT_SAFEMODE_PROPERTY, "1");
}
Log.i(TAG, "Sending shutdown broadcast...");
// First send the high-level shut down broadcast.
mActionDone = false;
Intent intent = new Intent(Intent.ACTION_SHUTDOWN);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
mContext.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, null, br, mHandler, 0, null, null);
final long endTime = SystemClock.elapsedRealtime() + MAX_BROADCAST_TIME;
synchronized (mActionDoneSync) {
while (!mActionDone) {
long delay = endTime - SystemClock.elapsedRealtime();
if (delay <= 0) {
Log.w(TAG, "Shutdown broadcast timed out");
break;
} else if (mRebootHasProgressBar) {
int status = (int) ((MAX_BROADCAST_TIME - delay) * 1.0 * BROADCAST_STOP_PERCENT / MAX_BROADCAST_TIME);
sInstance.setRebootProgress(status, null);
}
try {
mActionDoneSync.wait(Math.min(delay, PHONE_STATE_POLL_SLEEP_MSEC));
} catch (InterruptedException e) {
}
}
}
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(BROADCAST_STOP_PERCENT, null);
}
Log.i(TAG, "Shutting down activity manager...");
final IActivityManager am = ActivityManagerNative.asInterface(ServiceManager.checkService("activity"));
if (am != null) {
try {
am.shutdown(MAX_BROADCAST_TIME);
} catch (RemoteException e) {
}
}
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(ACTIVITY_MANAGER_STOP_PERCENT, null);
}
Log.i(TAG, "Shutting down package manager...");
final PackageManagerService pm = (PackageManagerService) ServiceManager.getService("package");
if (pm != null) {
pm.shutdown();
}
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(PACKAGE_MANAGER_STOP_PERCENT, null);
}
// Shutdown radios.
shutdownRadios(MAX_RADIO_WAIT_TIME);
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(RADIO_STOP_PERCENT, null);
}
// Shutdown MountService to ensure media is in a safe state
IMountShutdownObserver observer = new IMountShutdownObserver.Stub() {
public void onShutDownComplete(int statusCode) throws RemoteException {
Log.w(TAG, "Result code " + statusCode + " from MountService.shutdown");
actionDone();
}
};
Log.i(TAG, "Shutting down MountService");
// Set initial variables and time out time.
mActionDone = false;
final long endShutTime = SystemClock.elapsedRealtime() + MAX_SHUTDOWN_WAIT_TIME;
synchronized (mActionDoneSync) {
try {
final IMountService mount = IMountService.Stub.asInterface(ServiceManager.checkService("mount"));
if (mount != null) {
mount.shutdown(observer);
} else {
Log.w(TAG, "MountService unavailable for shutdown");
}
} catch (Exception e) {
Log.e(TAG, "Exception during MountService shutdown", e);
}
while (!mActionDone) {
long delay = endShutTime - SystemClock.elapsedRealtime();
if (delay <= 0) {
Log.w(TAG, "Shutdown wait timed out");
break;
} else if (mRebootHasProgressBar) {
int status = (int) ((MAX_SHUTDOWN_WAIT_TIME - delay) * 1.0 * (MOUNT_SERVICE_STOP_PERCENT - RADIO_STOP_PERCENT) / MAX_SHUTDOWN_WAIT_TIME);
status += RADIO_STOP_PERCENT;
sInstance.setRebootProgress(status, null);
}
try {
mActionDoneSync.wait(Math.min(delay, PHONE_STATE_POLL_SLEEP_MSEC));
} catch (InterruptedException e) {
}
}
}
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(MOUNT_SERVICE_STOP_PERCENT, null);
// If it's to reboot to install an update and uncrypt hasn't been
// done yet, trigger it now.
uncrypt();
}
// If it is alarm boot and encryption status, power off alarm status will
// be set to handled when device go to shutdown or reboot.
boolean isAlarmBoot = SystemProperties.getBoolean("ro.alarm_boot", false);
String cryptState = SystemProperties.get("vold.decrypt");
if (isAlarmBoot && ("trigger_restart_min_framework".equals(cryptState) || "1".equals(cryptState))) {
AlarmManager.writePowerOffAlarmFile(AlarmManager.POWER_OFF_ALARM_HANDLE_FILE, AlarmManager.POWER_OFF_ALARM_HANDLED);
}
// If it is factory data reset, value in POWER_OFF_ALARM_TIMEZONE_FILE will be cleared.
if (mReboot && PowerManager.REBOOT_RECOVERY.equals(mReason)) {
AlarmManager.writePowerOffAlarmFile(AlarmManager.POWER_OFF_ALARM_TIMEZONE_FILE, "");
} else {
AlarmManager.writePowerOffAlarmFile(AlarmManager.POWER_OFF_ALARM_TIMEZONE_FILE, SystemProperties.get("persist.sys.timezone"));
}
rebootOrShutdown(mContext, mReboot, mReason);
}
Aggregations