还有 documentation/tutorial/example 的 sendBroadcastAsUser 吗?

Any further documentation/tutorial/example of sendBroadcastAsUser?

关于 sendBroadcastAsUser 的唯一文档是这样说的:

sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission)

Version of sendBroadcast(Intent, String) that allows you to specify the user the broadcast will be sent to.

但是我找不到任何示例说明如何指定用户,或者如何设置侦听器来收听此类广播。

在 AOSP 源代码中我找到了这个例子:

Intent intent = new Intent(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
intent.putExtra(PhoneConstants.STATE_KEY,
        DefaultPhoneNotifier.convertCallState(state).toString());
if (!TextUtils.isEmpty(incomingNumber)) {
    intent.putExtra(TelephonyManager.EXTRA_INCOMING_NUMBER, incomingNumber);
}
intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
        android.Manifest.permission.READ_PHONE_STATE);

作为指定用户,UserHandle.ALL 是什么意思,如果它的字面意思是 "all" 那么将 sendBroadcastAsUser() 与 ALL 一起使用而不是仅使用香草 sendBroadcast() 有什么意义?

我的应用能收听这个特定的系统广播吗?

sendBroadcast() - 仅向当前用户 运行 中的应用广播意图

sendBroadcastAsUser 允许向其他应用中的应用 运行 发送广播。但这需要 INTERACT_ACROSS_USERS_FULL 权限,这是第三方应用程序无法获得的。这就是原因,api 没有记录

what is the point in using sendBroadcastAsUser() with ALL rather than just use the vanilla sendBroadcast()?

sendBroadcastAsUser 允许向特定用户发送广播,或者在使用 UserHandle.ALL 的情况下向所有用户发送广播。

Would my app be able to listen to this particular system broadcast?

是的,只要您的应用有权接收该广播

,发送给您的应用 运行 所在用户的任何广播都将能够收听该广播