在我的应用程序发生某些连接时,用户应该做出一些决定。我希望用户在对话框中执行此操作。因此,如果屏幕未锁定,则立即显示对话框,如果屏幕被锁定,请打开屏幕并显示通知(如短信通知),当用户触摸通知并解锁屏幕时,请看对话框。
答案 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,可让您打开屏幕并将其保持一段时间。
答案 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
);
...
}