在我的android i app中,我可以报警功能以及退出功能。设置闹钟时间后,我点击退出按钮退出应用程序。
我正在使用
ExitActivity.this.finish();
Intent intent1 = new Intent(ExitActivity.this,PinActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent1);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
此代码退出应用程序,进入主页屏幕,然后启动主屏幕。这是因为当我回到我的应用程序时,它会启动画布。报警工作正是我想要的但是当报警弹出消息它在背景中有pinactivity(我不想要)。我不想摆脱背景中的pin活动。
这是我的接收器类?
public class ShortTimeEntryReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Alarm Working", Toast.LENGTH_SHORT).show();
try {
Bundle bundle = intent.getExtras();
String message = bundle.getString("alarm_message");
Intent newIntent = new Intent(context, ReminderPopupMessage.class);
newIntent.putExtra("alarm_message", message);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
} catch (Exception e) {
Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
我该怎么做? 谢谢你的帮助..
答案 0 :(得分:3)
您应该使用Alarm Manager在Android中设置闹钟。警报管理器保持警报并在警报时间触发未决意图。
首先创建一个挂起的意图,如下所示:
pendingIntent = PendingIntent.getService(CONTEXT, ALARM_ID, INTENT_TO_LAUNCH, 0);
然后使用此待处理意图设置如下警告:
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, ALARM_TIME, pendingIntent);
这将在给定时间开始待处理的意图。
要删除警报,您必须使用相同的ALARM_ID重新创建相同的待处理意图:
alarmManager.cancel(pendingIntent);
答案 1 :(得分:1)
首先创建一个挂起的意图,如下所示:
pendingIntent = PendingIntent.getService(context, alarm_id, Pass your data with intent, PendingIntent.FLAG_UPDATE_CURRENT);
设置如下警告:
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//19 4.4and above api level
am.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() + AlarmManager.INTERVAL_DAY, sender);
} else {
//below 19 4.4
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() + AlarmManager.INTERVAL_DAY, sender);
}
这将在给定时间开始待处理的意图。
要删除警报,您必须使用与相同ALARM_ID
:
am.cancel(pendingIntent);
现在您需要创建一个服务来捕获您的警报。