Search in sources :

Example 26 with Message

use of android.os.Message in project android_frameworks_base by ParanoidAndroid.

the class BackupManagerService method restoreAtInstall.

// An application being installed will need a restore pass, then the Package Manager
// will need to be told when the restore is finished.
public void restoreAtInstall(String packageName, int token) {
    if (Binder.getCallingUid() != Process.SYSTEM_UID) {
        Slog.w(TAG, "Non-system process uid=" + Binder.getCallingUid() + " attemping install-time restore");
        return;
    }
    long restoreSet = getAvailableRestoreToken(packageName);
    if (DEBUG)
        Slog.v(TAG, "restoreAtInstall pkg=" + packageName + " token=" + Integer.toHexString(token) + " restoreSet=" + Long.toHexString(restoreSet));
    if (mAutoRestore && mProvisioned && restoreSet != 0) {
        // okay, we're going to attempt a restore of this package from this restore set.
        // The eventual message back into the Package Manager to run the post-install
        // steps for 'token' will be issued from the restore handling code.
        // We can use a synthetic PackageInfo here because:
        //   1. We know it's valid, since the Package Manager supplied the name
        //   2. Only the packageName field will be used by the restore code
        PackageInfo pkg = new PackageInfo();
        pkg.packageName = packageName;
        mWakelock.acquire();
        Message msg = mBackupHandler.obtainMessage(MSG_RUN_RESTORE);
        msg.obj = new RestoreParams(getTransport(mCurrentTransport), null, restoreSet, pkg, token, true);
        mBackupHandler.sendMessage(msg);
    } else {
        // Manager to proceed with the post-install handling for this package.
        if (DEBUG)
            Slog.v(TAG, "No restore set -- skipping restore");
        try {
            mPackageManagerBinder.finishPackageInstall(token);
        } catch (RemoteException e) {
        /* can't happen */
        }
    }
}
Also used : Message(android.os.Message) PackageInfo(android.content.pm.PackageInfo) RemoteException(android.os.RemoteException)

Example 27 with Message

use of android.os.Message in project android_frameworks_base by ParanoidAndroid.

the class BackupManagerService method opComplete.

// Note that a currently-active backup agent has notified us that it has
// completed the given outstanding asynchronous backup/restore operation.
@Override
public void opComplete(int token) {
    if (MORE_DEBUG)
        Slog.v(TAG, "opComplete: " + Integer.toHexString(token));
    Operation op = null;
    synchronized (mCurrentOpLock) {
        op = mCurrentOperations.get(token);
        if (op != null) {
            op.state = OP_ACKNOWLEDGED;
        }
        mCurrentOpLock.notifyAll();
    }
    // The completion callback, if any, is invoked on the handler
    if (op != null && op.callback != null) {
        Message msg = mBackupHandler.obtainMessage(MSG_OP_COMPLETE, op.callback);
        mBackupHandler.sendMessage(msg);
    }
}
Also used : Message(android.os.Message)

Example 28 with Message

use of android.os.Message in project android_frameworks_base by ParanoidAndroid.

the class AlarmManagerService method setLocked.

private void setLocked(Alarm alarm) {
    if (mDescriptor != -1) {
        // The kernel never triggers alarms with negative wakeup times
        // so we ensure they are positive.
        long alarmSeconds, alarmNanoseconds;
        if (alarm.when < 0) {
            alarmSeconds = 0;
            alarmNanoseconds = 0;
        } else {
            alarmSeconds = alarm.when / 1000;
            alarmNanoseconds = (alarm.when % 1000) * 1000 * 1000;
        }
        set(mDescriptor, alarm.type, alarmSeconds, alarmNanoseconds);
    } else {
        Message msg = Message.obtain();
        msg.what = ALARM_EVENT;
        mHandler.removeMessages(ALARM_EVENT);
        mHandler.sendMessageAtTime(msg, alarm.when);
    }
}
Also used : Message(android.os.Message)

Example 29 with Message

use of android.os.Message in project android_frameworks_base by ParanoidAndroid.

the class BackupManagerService method clearBackupData.

// Clear the given package's backup data from the current transport
public void clearBackupData(String packageName) {
    if (DEBUG)
        Slog.v(TAG, "clearBackupData() of " + packageName);
    PackageInfo info;
    try {
        info = mPackageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
    } catch (NameNotFoundException e) {
        Slog.d(TAG, "No such package '" + packageName + "' - not clearing backup data");
        return;
    }
    // If the caller does not hold the BACKUP permission, it can only request a
    // wipe of its own backed-up data.
    HashSet<String> apps;
    if ((mContext.checkPermission(android.Manifest.permission.BACKUP, Binder.getCallingPid(), Binder.getCallingUid())) == PackageManager.PERMISSION_DENIED) {
        apps = mBackupParticipants.get(Binder.getCallingUid());
    } else {
        // !!! TODO: allow data-clear of ANY app?
        if (DEBUG)
            Slog.v(TAG, "Privileged caller, allowing clear of other apps");
        apps = new HashSet<String>();
        int N = mBackupParticipants.size();
        for (int i = 0; i < N; i++) {
            HashSet<String> s = mBackupParticipants.valueAt(i);
            if (s != null) {
                apps.addAll(s);
            }
        }
    }
    // Is the given app an available participant?
    if (apps.contains(packageName)) {
        if (DEBUG)
            Slog.v(TAG, "Found the app - running clear process");
        // found it; fire off the clear request
        synchronized (mQueueLock) {
            long oldId = Binder.clearCallingIdentity();
            mWakelock.acquire();
            Message msg = mBackupHandler.obtainMessage(MSG_RUN_CLEAR, new ClearParams(getTransport(mCurrentTransport), info));
            mBackupHandler.sendMessage(msg);
            Binder.restoreCallingIdentity(oldId);
        }
    }
}
Also used : Message(android.os.Message) NameNotFoundException(android.content.pm.PackageManager.NameNotFoundException) PackageInfo(android.content.pm.PackageInfo)

Example 30 with Message

use of android.os.Message in project android_frameworks_base by ParanoidAndroid.

the class NsdService method replyToMessage.

private void replyToMessage(Message msg, int what, Object obj) {
    if (msg.replyTo == null)
        return;
    Message dstMsg = obtainMessage(msg);
    dstMsg.what = what;
    dstMsg.obj = obj;
    mReplyChannel.replyToMessage(msg, dstMsg);
}
Also used : Message(android.os.Message)

Aggregations

Message (android.os.Message)3198 Handler (android.os.Handler)347 RemoteException (android.os.RemoteException)263 Bundle (android.os.Bundle)210 Test (org.junit.Test)144 Intent (android.content.Intent)130 IOException (java.io.IOException)124 Point (android.graphics.Point)86 HashMap (java.util.HashMap)77 SomeArgs (com.android.internal.os.SomeArgs)67 SmallTest (android.test.suitebuilder.annotation.SmallTest)64 Messenger (android.os.Messenger)63 ArrayList (java.util.ArrayList)59 View (android.view.View)52 File (java.io.File)50 MediumTest (android.test.suitebuilder.annotation.MediumTest)43 TextView (android.widget.TextView)41 IBinder (android.os.IBinder)38 Map (java.util.Map)37 PendingIntent (android.app.PendingIntent)33