19

フォアグラウンド モードで実行されているサービスがあり、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 );
    }
}
4

1 に答える 1