仅向托管配置文件应用程序发送系统广播
Send system broadcasts to only Managed profile applications
我在用户配置文件和托管配置文件 (AFW) 中都有一个应用程序。我正在尝试根据包名发送广播。
intent.setPackage(包名);
mContext.sendBroadcastAsUser(意图,UserHandle.ALL);
结果是两个应用程序(用户和受管理的配置文件)都获得了广播。
我只想向托管个人资料应用程序发送广播(所以基本上用户个人资料不应该接收)
如果我们可以获得托管配置文件用户 ID,则可以仅向托管配置文件发送广播。
现在要获取 userid,我们需要监听已添加的托管配置文件的广播。
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);
现在在onReceive中,如何获取userid,
@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));
注意:userid 实际上是在设备上配置管理配置文件或 AFW(Android For Work)时在 /data/user 下创建的文件夹名称。
我在用户配置文件和托管配置文件 (AFW) 中都有一个应用程序。我正在尝试根据包名发送广播。 intent.setPackage(包名); mContext.sendBroadcastAsUser(意图,UserHandle.ALL);
结果是两个应用程序(用户和受管理的配置文件)都获得了广播。
我只想向托管个人资料应用程序发送广播(所以基本上用户个人资料不应该接收)
如果我们可以获得托管配置文件用户 ID,则可以仅向托管配置文件发送广播。
现在要获取 userid,我们需要监听已添加的托管配置文件的广播。
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);
现在在onReceive中,如何获取userid,
@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));
注意:userid 实际上是在设备上配置管理配置文件或 AFW(Android For Work)时在 /data/user 下创建的文件夹名称。