在我的主要活动中有一个按钮.在其onclick监听器调用功能设置闹钟.闹钟正在工作,但我无法阻止它.可以帮助一个人
MainActivity.java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setalarm(); } }); } private void setalarm() { Calendar cal=Calendar.getInstance(); // cal.set(Calendar.MONTH,6); // cal.set(Calendar.YEAR,2013); // cal.set(Calendar.DAY_OF_MONTH,12); cal.set(Calendar.HOUR_OF_DAY,18); cal.set(Calendar.MINUTE,32); Intent intent = new Intent(this,Mote.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(),1253,intent,PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent ); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,AlarmManager.INTERVAL_DAY,pendingIntent); Toast.makeText(this,"Alarm SET.",Toast.LENGTH_LONG).show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main,menu); return true; } }
Mote.java
public class Mote extends BroadcastReceiver{ public void onReceive(Context context,Intent intent) { Toast.makeText(context,"Alarm worked.",Toast.LENGTH_LONG).show(); int icon = R.drawable.ic_launcher; CharSequence tickerText = "Hello you have to take medicine I am Nitin Sharma"; long when = System.currentTimeMillis(); CharSequence contentTitle = "My notification"; CharSequence contentText = "Hello World!"; final int NOTIF_ID = 1234; NotificationManager notofManager = (NotificationManager)context. getSystemService(Context.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(context,Alset.class); PendingIntent contentIntent = PendingIntent.getActivity(context,notificationIntent,0); Notification notification = new Notification(icon,tickerText,when ); notification.setLatestEventInfo(context,contentTitle,contentText,contentIntent); notification.flags = Notification.FLAG_INSISTENT; notification.defaults |= Notification.DEFAULT_SOUND; notofManager.notify(NOTIF_ID,notification); Toast.makeText(context,Toast.LENGTH_LONG).show(); Intent i = new Intent(context,Alset.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i);
Alset.java
public class Alset extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activitystop); Log.e("IM here ","Im here"); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(Alset.this,"Stop the alrm now",Toast.LENGTH_LONG).show(); } }); } } } }
一旦报警开始,我将在接收机的OnReceive()中收到回叫,从那里我进入活动Alset,我保持停止按钮.如何阻止这里的闹钟
注意: – 我可以硬编码设置闹钟的时间
解决方法
您可以这样取消警报:
Intent intent = new Intent(this,Mote.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.cancel(pendingIntent);