Xav*_*Gil 18 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 );
Run Code Online (Sandbox Code Playgroud)
然后在接收器中,您还可以检索用户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 );
}
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 16
尝试ACTION_USER_FOREGROUND和ACTION_USER_BACKGROUND.我没有使用它们,但它们是在API级别17中添加的,它们的描述似乎可能有所帮助.
| 归档时间: |
|
| 查看次数: |
6844 次 |
| 最近记录: |