java - 如何在执行后获得待处理意图的引用
问题描述
我目前正在尝试使用 android studio 制作警报应用程序,但在制作解除警报按钮时遇到了麻烦。
我将待处理意图的请求代码在创建时传递给我的警报类,该类继承了广播接收器,广播接收器再次将请求代码发送到新的活动警报页面,您可以在其中解除警报。并且使用这个请求代码我正在创建一个挂起的意图,我正在尝试使用这个挂起的意图取消警报,因为它应该是我创建的相同的挂起意图(它们具有相同的请求代码)
boolean result=databaseHelper.addAlarm(fh+":"+fm);
int requestCode=databaseHelper.returnLastId();
AlarmManager alarmManager=(AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(getApplicationContext(),Alarm.class);
i.putExtra("rc",requestCode);
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),requestCode,i,0); alarmManager.setExact(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pi);
int id=intent.getIntExtra("rc",-1);
MediaPlayer mediaPlayer=MediaPlayer.create(context, Settings.System.DEFAULT_ALARM_ALERT_URI);
mediaPlayer.start();
Intent intent1=new Intent(context,AlarmPage.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent1.putExtra("id",id);
context.startActivity(intent1);
Intent intent=getIntent();
id=intent.getIntExtra("id",-1);
Log.d("ID",id+"");
Button dismiss=(Button)findViewById(R.id.dismiss);
dismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("button","clicked");
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(getApplicationContext(), Alarm.class);
PendingIntent pi = (PendingIntent) PendingIntent.getBroadcast(getApplicationContext(), id, i, 0);
alarmManager.cancel(pi);
}
});
按下关闭按钮后,我原以为警报会取消,但什么也没发生,警报一直在响。我最好的猜测是它可能会以某种方式创建一个新的待处理意图,但我的请求代码与我原来的待处理意图相同。
解决方案
推荐阅读
- java - 使用wiremock时连接被拒绝
- c++ - 为什么在新的 IDE 中必须使用命名空间 std,而用 Turbo C++/Borland C++ 编写的程序不需要命名空间 std?
- javascript - 如何禁用按钮并更改此代码上的按钮文本?
- pandas - 删除索引中基于 df 的条件中的行
- c++ - 为什么在 std::istream_iterators 上使用的 std::find_if 似乎返回最后一个元素?
- java - 克隆有限的多维
- amazon-web-services - 使用 JDBC 驱动程序的 Hive EMR (AWS) 的 Tibco 7.14 连接问题
- python - Pandas DF NotImplementedError:使用 MultiIndex 列写入 Excel 且没有索引('index'=False)尚未实现
- javascript - 如何在 Firebase 上托管的反应项目中提供资产路径?
- jquery - 随机化顺序
- 元素,但按类对它们进行分组