Его можно отправить радиопередачу только управляемый профиль, если мы можем получить профиль управляемого идентификатор пользователя.
Теперь, чтобы получить идентификатор пользователя, нам необходимо прослушать широковещательную передачу управляемого профиля.
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, как получить идентификатор пользователя,
@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 - это имя папки, которое создается под/data/user, когда на устройстве настроен управляемый профиль или AFW (Android For Work).
Я хочу спросить вас, если вы можете выполнить mContext.sendBroadcastAsUser (намерение, UserHandle.ALL); Я читал, что это можно сделать только для системных приложений. (Это правда?) – Sam
Да, я могу выполнить, и вы правы. mContext.sendBroadcastAsUser (намерение, UserHandle.ALL) можно получить только из системных приложений. Я отправляю эту трансляцию с PhoneWindowManager. –