如何检测用户之间的切换

时间:2013-03-13 17:18:49

标签: android android-multiple-users

我有一个以前台模式运行的服务,我想检测运行Android 4.2或更高版本的平板电脑上的用户会话之间的切换。

我可以注册任何广播接收器以获得通知吗?

我注意到,只要在锁定屏幕上选择了另一个用户会话,Google音乐就会停止播放音乐。它如何检测开关?


答案解释

感谢@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 );

然后在接收器中,您还可以检索用户ID。这是一个小片段:

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 个答案:

答案 0 :(得分:16)

尝试ACTION_USER_FOREGROUNDACTION_USER_BACKGROUND。我没有使用它们,但它们是在API级别17中添加的,它们的描述似乎可能有所帮助。