Как обнаружить переключение между пользователями
У меня есть служба, работающая в режиме переднего плана, и я хотел бы обнаружить переключение между пользовательскими сеансами на планшетах под управлением Android 4.2 или выше.
Есть ли какой-нибудь приемник вещания, который я могу зарегистрировать, чтобы получать уведомления?
Я заметил, что Google Music останавливает воспроизведение музыки, как только на экране блокировки выбирается другой сеанс пользователя. Как он обнаруживает переключатель?
ОТВЕТ ОБЪЯСНЕН
Спасибо @CommonsWare за правильный ответ. Я объясню немного больше, как обнаружить пользовательский переключатель.
Во-первых, имейте в виду, что в документации прямо сказано, что получатели должны быть зарегистрированы через Context.registerReceiver
, Поэтому сделайте что-то вроде:
UserSwitchReceiver receiver = new UserSwitchReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction( Intent.ACTION_USER_BACKGROUND );
filter.addAction( Intent.ACTION_USER_FOREGROUND );
registerReceiver( receiver, filter );
Затем в приемнике вы также можете получить идентификатор пользователя. Вот небольшой фрагмент:
public class UserSwitchReceiver extends BroadcastReceiver {
private static final String TAG = "UserSwitchReceiver";
@Override
public void onReceive(Context context, Intent intent)
{
boolean userSentBackground = intent.getAction().equals( Intent.ACTION_USER_BACKGROUND );
boolean userSentForeground = intent.getAction().equals( Intent.ACTION_USER_FOREGROUND );
Log.d( TAG, "Switch received. User sent background = " + userSentBackground + "; User sent foreground = " + userSentForeground + ";" );
int user = intent.getExtras().getInt( "android.intent.extra.user_handle" );
Log.d( TAG, "user = " + user );
}
}
1 ответ
Пытаться ACTION_USER_FOREGROUND
а также ACTION_USER_BACKGROUND
, Я не использовал их, но они были добавлены в API Level 17, и их описание, похоже, может помочь.