我在用户档案和受管理档案(AFW)中都有一个应用程序。我试图根据包名称发送广播。
intent.setPackage(packageName); mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
结果是两个应用程序(用户和管理档案)都会接收到广播。
我想只向受管理档案的应用程序发送广播(因此基本上不应该向用户档案发送)。
我在用户档案和受管理档案(AFW)中都有一个应用程序。我试图根据包名称发送广播。
intent.setPackage(packageName); mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
结果是两个应用程序(用户和管理档案)都会接收到广播。
我想只向受管理档案的应用程序发送广播(因此基本上不应该向用户档案发送)。
如果我们可以获取受管理的个人资料的用户ID,就可以仅向受管理的个人资料发送广播。
现在,要获取用户ID,我们需要监听添加了受管理的个人资料的广播。
Intent.ACTION_MANAGED_PROFILE_ADDED
注册监听此广播的步骤:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
context.registerReceiver(mManagedProfileListener, filter);
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_MANAGED_PROFILE_ADDED.equals(intent.getAction())
&& intent.hasExtra(Intent.EXTRA_USER)) {
UserHandle handle = intent.getExtras().getParcelable(Intent.EXTRA_USER);
userid = handle.getIdentifier();
}
}
mContext.sendBroadcastAsUser(intent, new UserHandle(userid));