Search in sources :

Example 6 with IActivityManager

use of android.app.IActivityManager in project android_frameworks_base by ResurrectionRemix.

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
    }
}
Also used : Locale(java.util.Locale) Configuration(android.content.res.Configuration) RemoteException(android.os.RemoteException) IActivityManager(android.app.IActivityManager)

Example 7 with IActivityManager

use of android.app.IActivityManager in project android_frameworks_base by ResurrectionRemix.

the class SettingsCmd method run.

public void run() {
    boolean valid = false;
    String arg;
    try {
        while ((arg = nextArg()) != null) {
            if ("--user".equals(arg)) {
                if (mUser != -1) {
                    // --user specified more than once; invalid
                    break;
                }
                arg = nextArg();
                if ("current".equals(arg) || "cur".equals(arg)) {
                    mUser = UserHandle.USER_CURRENT;
                } else {
                    mUser = Integer.parseInt(arg);
                }
            } else if ("--cm".equals(arg)) {
                mUseCMSettingsProvider = true;
            } else if (mVerb == CommandVerb.UNSPECIFIED) {
                if ("get".equalsIgnoreCase(arg)) {
                    mVerb = CommandVerb.GET;
                } else if ("put".equalsIgnoreCase(arg)) {
                    mVerb = CommandVerb.PUT;
                } else if ("delete".equalsIgnoreCase(arg)) {
                    mVerb = CommandVerb.DELETE;
                } else if ("list".equalsIgnoreCase(arg)) {
                    mVerb = CommandVerb.LIST;
                } else {
                    // invalid
                    System.err.println("Invalid command: " + arg);
                    break;
                }
            } else if (mTable == null) {
                if (!"system".equalsIgnoreCase(arg) && !"secure".equalsIgnoreCase(arg) && !"global".equalsIgnoreCase(arg)) {
                    System.err.println("Invalid namespace '" + arg + "'");
                    // invalid
                    break;
                }
                mTable = arg.toLowerCase();
                if (mVerb == CommandVerb.LIST) {
                    valid = true;
                    break;
                }
            } else if (mVerb == CommandVerb.GET || mVerb == CommandVerb.DELETE) {
                mKey = arg;
                if (mNextArg >= mArgs.length) {
                    valid = true;
                } else {
                    System.err.println("Too many arguments");
                }
                break;
            } else if (mKey == null) {
                mKey = arg;
            // keep going; there's another PUT arg
            } else {
                // PUT, final arg
                mValue = arg;
                if (mNextArg >= mArgs.length) {
                    valid = true;
                } else {
                    System.err.println("Too many arguments");
                }
                break;
            }
        }
    } catch (Exception e) {
        valid = false;
    }
    if (valid) {
        try {
            IActivityManager activityManager = ActivityManagerNative.getDefault();
            if (mUser == UserHandle.USER_CURRENT) {
                mUser = activityManager.getCurrentUser().id;
            }
            if (mUser < 0) {
                mUser = UserHandle.USER_SYSTEM;
            }
            IContentProvider provider = null;
            IBinder token = new Binder();
            try {
                ContentProviderHolder holder = activityManager.getContentProviderExternal(mUseCMSettingsProvider ? CMSettings.AUTHORITY : Settings.AUTHORITY, UserHandle.USER_SYSTEM, token);
                if (holder == null) {
                    throw new IllegalStateException("Could not find settings provider");
                }
                provider = holder.provider;
                switch(mVerb) {
                    case GET:
                        System.out.println(getForUser(provider, mUser, mTable, mKey));
                        break;
                    case PUT:
                        putForUser(provider, mUser, mTable, mKey, mValue);
                        break;
                    case DELETE:
                        System.out.println("Deleted " + deleteForUser(provider, mUser, mTable, mKey) + " rows");
                        break;
                    case LIST:
                        for (String line : listForUser(provider, mUser, mTable)) {
                            System.out.println(line);
                        }
                        break;
                    default:
                        System.err.println("Unspecified command");
                        break;
                }
            } finally {
                if (provider != null) {
                    activityManager.removeContentProviderExternal("settings", token);
                }
            }
        } catch (Exception e) {
            System.err.println("Error while accessing settings provider");
            e.printStackTrace();
        }
    } else {
        printUsage();
    }
}
Also used : IBinder(android.os.IBinder) Binder(android.os.Binder) IBinder(android.os.IBinder) IContentProvider(android.content.IContentProvider) ContentProviderHolder(android.app.IActivityManager.ContentProviderHolder) RemoteException(android.os.RemoteException) IActivityManager(android.app.IActivityManager)

Example 8 with IActivityManager

use of android.app.IActivityManager in project android_frameworks_base by ResurrectionRemix.

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);
}
Also used : Context(android.content.Context) IMountShutdownObserver(android.os.storage.IMountShutdownObserver) Intent(android.content.Intent) BroadcastReceiver(android.content.BroadcastReceiver) RemoteException(android.os.RemoteException) ErrnoException(android.system.ErrnoException) IOException(java.io.IOException) PackageManagerService(com.android.server.pm.PackageManagerService) IMountService(android.os.storage.IMountService) RemoteException(android.os.RemoteException) IActivityManager(android.app.IActivityManager)

Example 9 with IActivityManager

use of android.app.IActivityManager in project android_frameworks_base by ResurrectionRemix.

the class SearchManagerService method launchLegacyAssist.

@Override
public boolean launchLegacyAssist(String hint, int userHandle, Bundle args) {
    ComponentName comp = getLegacyAssistComponent(userHandle);
    if (comp == null) {
        return false;
    }
    long ident = Binder.clearCallingIdentity();
    try {
        Intent intent = new Intent(Intent.ACTION_ASSIST);
        intent.setComponent(comp);
        IActivityManager am = ActivityManagerNative.getDefault();
        return am.launchAssistIntent(intent, ActivityManager.ASSIST_CONTEXT_BASIC, hint, userHandle, args);
    } catch (RemoteException e) {
    } finally {
        Binder.restoreCallingIdentity(ident);
    }
    return true;
}
Also used : ComponentName(android.content.ComponentName) Intent(android.content.Intent) RemoteException(android.os.RemoteException) IActivityManager(android.app.IActivityManager)

Example 10 with IActivityManager

use of android.app.IActivityManager in project Resurrection_packages_apps_Settings by ResurrectionRemix.

the class ConfirmDeviceCredentialBaseFragment method checkForPendingIntent.

protected void checkForPendingIntent() {
    int taskId = getActivity().getIntent().getIntExtra(Intent.EXTRA_TASK_ID, -1);
    if (taskId != -1) {
        try {
            IActivityManager activityManager = ActivityManagerNative.getDefault();
            final ActivityOptions options = ActivityOptions.makeBasic();
            options.setLaunchStackId(ActivityManager.StackId.INVALID_STACK_ID);
            activityManager.startActivityFromRecents(taskId, options.toBundle());
            return;
        } catch (RemoteException e) {
        // Do nothing.
        }
    }
    IntentSender intentSender = getActivity().getIntent().getParcelableExtra(Intent.EXTRA_INTENT);
    if (intentSender != null) {
        try {
            getActivity().startIntentSenderForResult(intentSender, -1, null, 0, 0, 0);
        } catch (IntentSender.SendIntentException e) {
        /* ignore */
        }
    }
}
Also used : RemoteException(android.os.RemoteException) IntentSender(android.content.IntentSender) Point(android.graphics.Point) IActivityManager(android.app.IActivityManager) ActivityOptions(android.app.ActivityOptions)

Aggregations

IActivityManager (android.app.IActivityManager)112 RemoteException (android.os.RemoteException)93 Intent (android.content.Intent)23 IBinder (android.os.IBinder)20 Configuration (android.content.res.Configuration)15 UserHandle (android.os.UserHandle)14 ContentProviderHolder (android.app.IActivityManager.ContentProviderHolder)11 IContentProvider (android.content.IContentProvider)11 Binder (android.os.Binder)11 ActivityOptions (android.app.ActivityOptions)9 ActivityThread (android.app.ActivityThread)9 Context (android.content.Context)8 IntentSender (android.content.IntentSender)8 Point (android.graphics.Point)7 SpannableString (android.text.SpannableString)7 BroadcastReceiver (android.content.BroadcastReceiver)6 ComponentName (android.content.ComponentName)6 IMountService (android.os.storage.IMountService)6 IMountShutdownObserver (android.os.storage.IMountShutdownObserver)6 Locale (java.util.Locale)6