2016-02-05 6 views
2

У меня есть приложение как в профиле пользователя, так и в управляемом профиле (AFW). Я пытаюсь отправить трансляцию на основе имени пакета. intent.setPackage (packageName); mContext.sendBroadcastAsUser (намерение, UserHandle.ALL);Передача системных широковещательных сообщений только на приложения управляемого профиля

Результат - оба приложения (пользовательские и управляемые профили) получают трансляцию.

Я хочу отправить трансляцию только управляемого приложению профиля (Поэтому в основном профиль не должен получать)

+0

Я хочу спросить вас, если вы можете выполнить mContext.sendBroadcastAsUser (намерение, UserHandle.ALL); Я читал, что это можно сделать только для системных приложений. (Это правда?) – Sam

+0

Да, я могу выполнить, и вы правы. mContext.sendBroadcastAsUser (намерение, UserHandle.ALL) можно получить только из системных приложений. Я отправляю эту трансляцию с PhoneWindowManager. –

ответ

1

Его можно отправить радиопередачу только управляемый профиль, если мы можем получить профиль управляемого идентификатор пользователя.

Теперь, чтобы получить идентификатор пользователя, нам необходимо прослушать широковещательную передачу управляемого профиля.

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).

 Смежные вопросы

  • Нет связанных вопросов^_^