获取通知&屏幕锁定时的对话框

时间:2017-12-12 09:41:14

标签: android android-studio notifications android-alertdialog

在我的应用程序发生某些连接时,用户应该做出一些决定。我希望用户在对话框中执行此操作。因此,如果屏幕未锁定,则立即显示对话框,如果屏幕被锁定,请打开屏幕并显示通知(如短信通知),当用户触摸通知并解锁屏幕时,请看对话框。

3 个答案:

答案 0 :(得分:0)

创建广播接收器:

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mReceiver = new ScreenReceiver();
    this.registerReceiver(mReceiver, filter);

从接收器中,您将知道屏幕打开或关闭的时间:

public class ScreenReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
        {
            screenon = false;
        }
        else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
        {
            screenon = true;
        }
    }

}
不要忘记在清单中申报接收者。 显示通知和对话不应该是问题。 使用android docs。

答案 1 :(得分:0)

查看wake lock,可让您打开屏幕并将其保持一段时间。

Here is the example.

答案 2 :(得分:0)

只需正常发送通知,并将以下标志添加到通知中调用的活动中。

<强> YourNotificationService.java

Intent intent = new Intent(context, YourActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);

<强> YourActivity.java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    ...

    getWindow().addFlags(
        WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
        + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
        + WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
    );

    ...
}