13
我有一个服务在前台模式下运行,我想检测运行Android 4.2或更高版本的平板电脑上的用户会话之间的切换。如何检测用户之间的切换
有没有我可以注册的广播接收器来获得通知?
我注意到,一旦在锁定屏幕上选择了另一个用户会话,Google音乐就会停止音乐播放。它如何检测交换机?
ANSWER EXPLAINED
感谢@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);
}
}
我很惊讶,服务继续在你的情况下运行。你真的检查过它继续吗? – 2013-03-13 17:25:55
是的。一方面,我可以看到我的应用程序的日志形成另一个用户的帐户。另一方面,当我回到原始用户(运行我的服务)时,前台通知图标就在那里。日志中没有指示服务已停止的消息。 – 2013-03-13 17:36:50
我已经尝试了Google Play的广播流应用,并且在切换到其他用户时也不会死亡。 – 2013-03-13 17:53:04