/* Helper method, on API 17+ this method uses sendBroadcastAsUser to prevent * system warnings in logcat. */ public static void sendBroadcast(Context context, Intent intent) { int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { context.sendBroadcastAsUser( intent, (UserHandle) XposedHelpers.getStaticObjectField(UserHandle.class, "CURRENT")); } else { context.sendBroadcast(intent); } }
private void sendBroadcast(String code, String status, String payload) { Intent broadcastIntent = new Intent(); broadcastIntent.setAction(Constants.SYSTEM_APP_ACTION_RESPONSE); broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); broadcastIntent.putExtra(Constants.CODE, code); broadcastIntent.putExtra(Constants.STATUS, status); broadcastIntent.putExtra(Constants.PAYLOAD, payload); context.sendBroadcastAsUser(broadcastIntent, android.os.Process.myUserHandle()); }
/** Cancels low storage notification and sends OK intent. */ private final void cancelNotification() { if (localLOGV) Slog.i(TAG, "Canceling low memory notification"); NotificationManager mNotificationMgr = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); // cancel notification since memory has been freed mNotificationMgr.cancelAsUser(null, LOW_MEMORY_NOTIFICATION_ID, UserHandle.ALL); mContext.removeStickyBroadcastAsUser(mStorageLowIntent, UserHandle.ALL); mContext.sendBroadcastAsUser(mStorageOkIntent, UserHandle.ALL); }
/** Notifies the status bar to trigger screen pinning. */ @ProxyFromAnyToPrimaryUser public static void startScreenPinning(Context context, SystemServicesProxy ssp) { if (ssp.isForegroundUserOwner()) { onStartScreenPinning(context); } else { Intent intent = createLocalBroadcastIntent(context, ACTION_PROXY_SCREEN_PINNING_REQUEST_TO_OWNER); context.sendBroadcastAsUser(intent, UserHandle.OWNER); } }
/** Notifies the callbacks that the visibility of Recents has changed. */ @ProxyFromAnyToPrimaryUser public static void notifyVisibilityChanged( Context context, SystemServicesProxy ssp, boolean visible) { if (ssp.isForegroundUserOwner()) { visibilityChanged(visible); } else { Intent intent = createLocalBroadcastIntent(context, ACTION_PROXY_NOTIFY_RECENTS_VISIBLITY_TO_OWNER); intent.putExtra(EXTRA_RECENTS_VISIBILITY, visible); context.sendBroadcastAsUser(intent, UserHandle.OWNER); } }
@Override public UserInfo createUser(String name, int flags) { checkManageUsersPermission("Only the system can create users"); final long ident = Binder.clearCallingIdentity(); final UserInfo userInfo; try { synchronized (mInstallLock) { synchronized (mPackagesLock) { if (isUserLimitReachedLocked()) return null; int userId = getNextAvailableIdLocked(); userInfo = new UserInfo(userId, name, null, flags); File userPath = new File(mBaseUserPath, Integer.toString(userId)); userInfo.serialNumber = mNextSerialNumber++; long now = System.currentTimeMillis(); userInfo.creationTime = (now > EPOCH_PLUS_30_YEARS) ? now : 0; userInfo.partial = true; Environment.getUserSystemDirectory(userInfo.id).mkdirs(); mUsers.put(userId, userInfo); writeUserListLocked(); writeUserLocked(userInfo); mPm.createNewUserLILPw(userId, userPath); userInfo.partial = false; writeUserLocked(userInfo); updateUserIdsLocked(); } } if (userInfo != null) { Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED); addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userInfo.id); mContext.sendBroadcastAsUser( addedIntent, UserHandle.ALL, android.Manifest.permission.MANAGE_USERS); } } finally { Binder.restoreCallingIdentity(ident); } return userInfo; }
/** Cancels memory full notification and sends "not full" intent. */ private final void cancelFullNotification() { if (localLOGV) Slog.i(TAG, "Canceling memory full notification"); mContext.removeStickyBroadcastAsUser(mStorageFullIntent, UserHandle.ALL); mContext.sendBroadcastAsUser(mStorageNotFullIntent, UserHandle.ALL); }
private void sendUserInfoChangedBroadcast(int userId) { Intent changedIntent = new Intent(Intent.ACTION_USER_INFO_CHANGED); changedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId); changedIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); mContext.sendBroadcastAsUser(changedIntent, new UserHandle(userId)); }