Search in sources :

Example 51 with UserHandle

use of android.os.UserHandle in project android_frameworks_base by ResurrectionRemix.

the class TvRemoteProviderProxy method bind.

private void bind() {
    if (!mBound) {
        if (DEBUG) {
            Slog.d(TAG, this + ": Binding");
        }
        Intent service = new Intent(SERVICE_INTERFACE);
        service.setComponent(mComponentName);
        try {
            mBound = mContext.bindServiceAsUser(service, this, Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE, new UserHandle(mUserId));
            if (!mBound && DEBUG) {
                Slog.d(TAG, this + ": Bind failed");
            }
        } catch (SecurityException ex) {
            if (DEBUG) {
                Slog.d(TAG, this + ": Bind failed", ex);
            }
        }
    }
}
Also used : UserHandle(android.os.UserHandle) Intent(android.content.Intent)

Example 52 with UserHandle

use of android.os.UserHandle in project android_frameworks_base by ResurrectionRemix.

the class TvRemoteProviderWatcher method start.

public void start() {
    if (DEBUG)
        Slog.d(TAG, "start()");
    if (!mRunning) {
        mRunning = true;
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_PACKAGE_ADDED);
        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
        filter.addDataScheme("package");
        mContext.registerReceiverAsUser(mScanPackagesReceiver, new UserHandle(mUserId), filter, null, mHandler);
        // Scan packages.
        // Also has the side-effect of restarting providers if needed.
        mHandler.post(mScanPackagesRunnable);
    }
}
Also used : IntentFilter(android.content.IntentFilter) UserHandle(android.os.UserHandle)

Example 53 with UserHandle

use of android.os.UserHandle in project android_frameworks_base by ResurrectionRemix.

the class TvInputManagerService method getContentResolverForUser.

private ContentResolver getContentResolverForUser(int userId) {
    UserHandle user = new UserHandle(userId);
    Context context;
    try {
        context = mContext.createPackageContextAsUser("android", 0, user);
    } catch (NameNotFoundException e) {
        Slog.e(TAG, "failed to create package context as user " + user);
        context = mContext;
    }
    return context.getContentResolver();
}
Also used : Context(android.content.Context) NameNotFoundException(android.content.pm.PackageManager.NameNotFoundException) UserHandle(android.os.UserHandle)

Example 54 with UserHandle

use of android.os.UserHandle in project android_frameworks_base by ResurrectionRemix.

the class WallpaperManagerService method notifyCallbacksLocked.

private void notifyCallbacksLocked(WallpaperData wallpaper) {
    final int n = wallpaper.callbacks.beginBroadcast();
    for (int i = 0; i < n; i++) {
        try {
            wallpaper.callbacks.getBroadcastItem(i).onWallpaperChanged();
        } catch (RemoteException e) {
        // The RemoteCallbackList will take care of removing
        // the dead object for us.
        }
    }
    wallpaper.callbacks.finishBroadcast();
    final Intent intent = new Intent(Intent.ACTION_WALLPAPER_CHANGED);
    mContext.sendBroadcastAsUser(intent, new UserHandle(mCurrentUserId));
}
Also used : UserHandle(android.os.UserHandle) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) RemoteException(android.os.RemoteException) Point(android.graphics.Point)

Example 55 with UserHandle

use of android.os.UserHandle in project android_frameworks_base by ResurrectionRemix.

the class WallpaperManagerService method bindWallpaperComponentLocked.

boolean bindWallpaperComponentLocked(ComponentName componentName, boolean force, boolean fromUser, WallpaperData wallpaper, IRemoteCallback reply) {
    if (DEBUG)
        Slog.v(TAG, "bindWallpaperComponentLocked: componentName=" + componentName);
    // Has the component changed?
    if (!force) {
        if (wallpaper.connection != null) {
            if (wallpaper.wallpaperComponent == null) {
                if (componentName == null) {
                    if (DEBUG)
                        Slog.v(TAG, "bindWallpaperComponentLocked: still using default");
                    // Still using default wallpaper.
                    return true;
                }
            } else if (wallpaper.wallpaperComponent.equals(componentName)) {
                // Changing to same wallpaper.
                if (DEBUG)
                    Slog.v(TAG, "same wallpaper");
                return true;
            }
        }
    }
    try {
        if (componentName == null) {
            componentName = WallpaperManager.getDefaultWallpaperComponent(mContext);
            if (componentName == null) {
                // Fall back to static image wallpaper
                componentName = mImageWallpaper;
                //return;
                if (DEBUG)
                    Slog.v(TAG, "Using image wallpaper");
            }
        }
        int serviceUserId = wallpaper.userId;
        ServiceInfo si = mIPackageManager.getServiceInfo(componentName, PackageManager.GET_META_DATA | PackageManager.GET_PERMISSIONS, serviceUserId);
        if (si == null) {
            // The wallpaper component we're trying to use doesn't exist
            Slog.w(TAG, "Attempted wallpaper " + componentName + " is unavailable");
            return false;
        }
        if (!android.Manifest.permission.BIND_WALLPAPER.equals(si.permission)) {
            String msg = "Selected service does not require " + android.Manifest.permission.BIND_WALLPAPER + ": " + componentName;
            if (fromUser) {
                throw new SecurityException(msg);
            }
            Slog.w(TAG, msg);
            return false;
        }
        WallpaperInfo wi = null;
        Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
        if (componentName != null && !componentName.equals(mImageWallpaper)) {
            // Make sure the selected service is actually a wallpaper service.
            List<ResolveInfo> ris = mIPackageManager.queryIntentServices(intent, intent.resolveTypeIfNeeded(mContext.getContentResolver()), PackageManager.GET_META_DATA, serviceUserId).getList();
            for (int i = 0; i < ris.size(); i++) {
                ServiceInfo rsi = ris.get(i).serviceInfo;
                if (rsi.name.equals(si.name) && rsi.packageName.equals(si.packageName)) {
                    try {
                        wi = new WallpaperInfo(mContext, ris.get(i));
                    } catch (XmlPullParserException e) {
                        if (fromUser) {
                            throw new IllegalArgumentException(e);
                        }
                        Slog.w(TAG, e);
                        return false;
                    } catch (IOException e) {
                        if (fromUser) {
                            throw new IllegalArgumentException(e);
                        }
                        Slog.w(TAG, e);
                        return false;
                    }
                    break;
                }
            }
            if (wi == null) {
                String msg = "Selected service is not a wallpaper: " + componentName;
                if (fromUser) {
                    throw new SecurityException(msg);
                }
                Slog.w(TAG, msg);
                return false;
            }
        }
        // Bind the service!
        if (DEBUG)
            Slog.v(TAG, "Binding to:" + componentName);
        WallpaperConnection newConn = new WallpaperConnection(wi, wallpaper);
        intent.setComponent(componentName);
        intent.putExtra(Intent.EXTRA_CLIENT_LABEL, com.android.internal.R.string.wallpaper_binding_label);
        intent.putExtra(Intent.EXTRA_CLIENT_INTENT, PendingIntent.getActivityAsUser(mContext, 0, Intent.createChooser(new Intent(Intent.ACTION_SET_WALLPAPER), mContext.getText(com.android.internal.R.string.chooser_wallpaper)), 0, null, new UserHandle(serviceUserId)));
        if (!mContext.bindServiceAsUser(intent, newConn, Context.BIND_AUTO_CREATE | Context.BIND_SHOWING_UI | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE, new UserHandle(serviceUserId))) {
            String msg = "Unable to bind service: " + componentName;
            if (fromUser) {
                throw new IllegalArgumentException(msg);
            }
            Slog.w(TAG, msg);
            return false;
        }
        if (wallpaper.userId == mCurrentUserId && mLastWallpaper != null) {
            detachWallpaperLocked(mLastWallpaper);
        }
        wallpaper.wallpaperComponent = componentName;
        wallpaper.connection = newConn;
        newConn.mReply = reply;
        try {
            if (wallpaper.userId == mCurrentUserId) {
                if (DEBUG)
                    Slog.v(TAG, "Adding window token: " + newConn.mToken);
                mIWindowManager.addWindowToken(newConn.mToken, WindowManager.LayoutParams.TYPE_WALLPAPER);
                mLastWallpaper = wallpaper;
            }
        } catch (RemoteException e) {
        }
    } catch (RemoteException e) {
        String msg = "Remote exception for " + componentName + "\n" + e;
        if (fromUser) {
            throw new IllegalArgumentException(msg);
        }
        Slog.w(TAG, msg);
        return false;
    }
    return true;
}
Also used : IWallpaperConnection(android.service.wallpaper.IWallpaperConnection) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) IOException(java.io.IOException) Point(android.graphics.Point) ServiceInfo(android.content.pm.ServiceInfo) ResolveInfo(android.content.pm.ResolveInfo) UserHandle(android.os.UserHandle) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) RemoteException(android.os.RemoteException) WallpaperInfo(android.app.WallpaperInfo)

Aggregations

UserHandle (android.os.UserHandle)1087 Intent (android.content.Intent)306 RemoteException (android.os.RemoteException)205 Test (org.junit.Test)165 UserInfo (android.content.pm.UserInfo)152 PendingIntent (android.app.PendingIntent)134 Bundle (android.os.Bundle)127 Context (android.content.Context)126 ApplicationInfo (android.content.pm.ApplicationInfo)93 ArrayList (java.util.ArrayList)91 PackageManager (android.content.pm.PackageManager)86 UserManager (android.os.UserManager)85 ComponentName (android.content.ComponentName)82 NameNotFoundException (android.content.pm.PackageManager.NameNotFoundException)82 Drawable (android.graphics.drawable.Drawable)61 IBinder (android.os.IBinder)49 IOException (java.io.IOException)45 Config (org.robolectric.annotation.Config)41 Account (android.accounts.Account)39 ResolveInfo (android.content.pm.ResolveInfo)37