如何解决Android 打开屏幕并在关闭时开始活动
我正在制作一个闹钟应用程序,我正处于需要显示闹钟屏幕 (AlarmActivity) 的阶段,因为来自 broadcastReceiver 的 onReceive 被调用。 以下是我需要在闹钟响起时完成的事情。
我试过这个代码,但它不起作用。 Start activity even when screen is turned off
我的主要活动的onCreate是..
setContentView(R.layout.activity_main);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent myIntent1 = new Intent(this,AlarmReceiver.class);
myIntent1.putExtra("msg","Wake up Wake up1");
myIntent1.putExtra("repeat",0);
PendingIntent pendingIntent1 = PendingIntent.getbroadcast(this,2571123,myIntent1,PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,19);
calendar.set(Calendar.MINUTE,48);
calendar.set(Calendar.SECOND,00);
alarmManager.setExact(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent1);
它会在特定时间设置闹钟。
这是我的 AlarmReceiver 类。
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void onReceive(Context context,Intent intent) {
String msg = intent.getStringExtra("msg");
Log.d("ALARMONMATE",msg);
Intent intent1 = new Intent(context,SampleAlarmActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent1.putExtra("msg",msg);
context.startActivity(intent1);
这是我的 AlarmActivity.java,我想在闹钟时显示的屏幕。
public class SampleAlarmActivity extends AppCompatActivity {
private PowerManager.WakeLock wake = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_alarm);
Intent intent = getIntent();
String msg = intent.getStringExtra("msg");
TextView txt = findViewById(R.id.textView);
txt.setText(msg);
PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wake = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,"App:wakeuptag");
wake.acquire(1*60*1000);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setShowWhenLocked(true);
setTurnScreenOn(true);
} else {
getwindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_disMISS_KEyguard|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
}
}
}
如果有人至少可以留下我可以参考的链接或在这种情况下有用的概念,那就太好了。 我已经研究了 WakeLock 以及关于这个问题的 20 多个问题。但是,我不太确定它们是否已经过时,因为它们中的大多数都来自 8 多年前。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。