gpt4 book ai didi

android - 仅向托管配置文件应用程序发送系统广播

转载 作者:太空狗 更新时间:2023-10-29 14:01:38 26 4
gpt4 key购买 nike

我在用户配置文件和托管配置文件 (AFW) 中都有一个应用程序。我正在尝试根据包名发送广播。intent.setPackage(包名);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);

现在在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 下创建的文件夹名称。

关于android - 仅向托管配置文件应用程序发送系统广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35221043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com