Articles of android pendingintent

如何在android中停止警报

在我的主要活动中有一个按钮。 在它的onclick监听器我调用function来设置闹钟。闹钟正在工作,但我无法阻止它。可以帮助我一些人 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, […]

android如何比较未决意图

PendingIntent.FLAG_NO_CREATE的文档内容如下: 指示如果描述的PendingIntent尚不存在的标志,则只返回null而不是创建它。 我的问题:用什么标准来比较PendingIntents? 我猜这个标志使用了PendingIntent.equals ,但是我不确定该函数使用的是什么标准。 它是使用动作,requestCode,类别,额外(我猜不是)等? 语境: 如果我的警报尚未设置,我想以待定意图启动警报。 具体来说,我正在听这个答案 。 Intent i = new Intent(applicationContext, MyService.class); i.setAction(“myAction”); PendingIntent pi = PendingIntent.getService(applicationContext, /*requestCode*/0, i, PendingIntent.FLAG_NO_CREATE); if (pi != null) { AlarmManager alarmMgr = (AlarmManager)applicationContext.getSystemService(Context.AlarmService); alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, AlarmManager.INTERVAL_HOUR, AlarmManager.INTERVAL_HOUR, pi); }

停止Android alarmmanager的setrepeat

我已经创建了警报,如下所示 Intent intent = new Intent(this, Areceiver.class); PendingIntent sender = PendingIntent.getBroadcast(this, 1234567, intent, 0); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, timenow, 3000, sender); 我创建了一个按钮来停止闹钟。 在onclick方法中,我编写了以下代码 Intent intentstop = new Intent(this, Areceiver.class); PendingIntent senderstop = PendingIntent.getBroadcast(this, 0, intentstop, 0); AlarmManager alarmManagerstop = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManagerstop.cancel(senderstop); 但工作并没有停止。 可能是什么问题?

是否可以使用相同的requestCode和不同的附加function创建多个PendingIntents?

我正在使用AlarmManager来安排1到35个警报之间的任何位置(取决于用户输入)。 当用户请求安排新警报时,我需要取消当前警报,因此我使用在finalvariables中定义的相同requestCode创建所有警报。 // clear remaining alarms Intent intentstop = new Intent(this, NDService.class); PendingIntent senderstop = PendingIntent.getService(this, NODIR_REQUESTCODE, intentstop, 0); am.cancel(senderstop); // loop through days if (sched_slider.getBooleanValue()) for (int day = 1; day < 8; day++) { if (day == 1 && sun.isChecked()) scheduleDay(day); if (day == 2 && mon.isChecked()) scheduleDay(day); if (day == 3 && […]

每次在Android中创建新的待定意图

如何每次创建待处理的意图? 目前,我现有的待定意图将被替换为新的意图。 我尝试使用FLAG_ONE_SHOT以及CANCEL_CURRENT但它没有用。

如何通过PendingIntent发送数据到广播?

我正在尝试通过PendingIntent发送一些额外的数据,例如: MyMessage message; //… Intent intent; SmsManager sms = SmsManager.getDefault(); intent = new Intent(Constants.SENT_PLAIN); intent.putExtra(Constants.EXTRA_RAW_ID, message.getId()); //putting long id (not -1L) PendingIntent sentPI = PendingIntent.getBroadcast(activity, 0, intent, 0); intent = new Intent(Constants.DELIVERED_PLAIN); intent.putExtra(Constants.EXTRA_RAW_ID, message.getId()); PendingIntent deliveredPI = PendingIntent.getBroadcast(activity, 0, intent, 0); sms.sendTextMessage(phoneNumber, null, message.getBody(), sentPI, deliveredPI); 然后在Broadcast尝试捕获数据: @Override public void onReceive(Context context, Intent intent) { […]

未触发Android通知操作(PendingIntent)

我正在尝试在我的应用程序中添加通知操作项,这是一个音乐播放器。 启动流时,应触发通知,并在通知中显示流的停止按钮。 到目前为止通知工作正常,我遇到了停止操作项目的问题。 以下是在启动流的服务中声明它的方式: Intent stopIntent = new Intent(this, MusicPlayerNew.class); stopIntent.putExtra(“STOP”, “STOP”); PendingIntent stopPendingIntent = PendingIntent.getActivity(this, 0, stopIntent, PendingIntent.FLAG_UPDATE_CURRENT, null); mBuilder.addAction(R.drawable.ic_stat_stop, “Stop”, stopPendingIntent); 现在在onResume() – 我的活动方法中,我用getIntent()。getStringExtra()检查“STOP”额外,但我通过getIntent()检索的意图没有设置额外的东西:( 我还试图检查发送广播(我有一个广播接收器工作从服务到活动通信) Intent stopIntent2 = new Intent(MusicPlayerNew.STOP_MEDIAPLAYER); PendingIntent stopPendingIntent2 = PendingIntent.getBroadcast(this, 0, stopIntent2, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.addAction(R.drawable.ic_stat_stop, “Stop”, stopPendingIntent2); 现在,如果活动当前位于前台,则此function正常。 如果活动在后台,则停止按钮不执行任何操作:( 编辑:我在我的Activity中将BroadcastReceiver作为私有类 private class DataUpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context […]

在临时演员中没有包含pendingIntent?

在处理应用程序时,我在Logcat上遇到了此错误消息。 谁能告诉我它意味着什么? 07-24 23:34:20.288 1140-1140/? E/NetworkScheduler.SchedulerReceiver﹕ Invalid parameter app 07-24 23:34:20.288 1140-1140/? E/NetworkScheduler.SchedulerReceiver﹕ Invalid package name : Perhaps you didn’t include a PendingIntent in the extras 为了您的信息:我在这个应用程序中使用了AlarmManager

如何为broadcastReceiver使用“goAsync”?

背景 从Honeycomb(API 11)开始,Android具有允许broadcastReceiver以异步方式运行的function,在它假定它可以使用名为“ goAsync ”的方法杀死其进程之前大约10秒: 这可以由onReceive(Context,Intent)中的应用程序调用,以允许它在从该函数返回后保持广播活动。 这并没有改变对广播相对响应的期望(在10秒内完成),但是允许实现将与其相关的工作移动到另一个线程,以避免由于磁盘IO而导致主UI线程出现故障。 问题 我在很多地方搜索过,没有find任何关于如何使用它的示例或教程。 不仅如此,该方法返回一个PendingIntent实例,我不知道该怎么做: 返回表示活动广播结果的BroadcastReceiver.PendingResult。 BroadcastRecord本身不再有效; 所有数据和其他交互必须通过BroadcastReceiver.PendingResult API。 完成广播处理后,必须调用PendingResult.finish()方法。 这个问题 你怎么用这个方法? 什么是它返回的PendingIntent,我应该怎么做呢?

对AlarmManager.setRepeating的多次调用提供了相同的Intent / PendingIntent额外值,但我提供了不同的值

写这个问题时解决了,但发布以防万一: 我正在设置这样的多个警报,具有不同的id值: AlarmManager alarms = (AlarmManager)context.getSystemService( Context.ALARM_SERVICE); Intent i = new Intent(MyReceiver.ACTION_ALARM); // “com.example.ALARM” i.putExtra(MyReceiver.EXTRA_ID, id); // “com.example.ID”, 2 PendingIntent p = PendingIntent.getBroadcast(context, 0, i, 0); alarms.setRepeating(AlarmManager.RTC_WAKEUP, nextMillis, 300000, p); // 5 mins ……并像这样接收它们: public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION_ALARM)) { // It’s time to sound/show an alarm final long id = […]