首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AlarmManager不工作

AlarmManager不工作
EN

Stack Overflow用户
提问于 2012-05-21 19:08:55
回答 5查看 38.6K关注 0票数 25

例如,我需要在10秒后启动activity AlarmReceiver。我需要在不运行应用程序的情况下激活它。但无论应用程序是否运行,都不会调用AlarmReceiver。有什么建议吗?

代码语言:javascript
复制
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 111, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

//alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
                                          //+ (10 * 1000), pendingIntent);
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-21 21:44:31

代码语言:javascript
复制
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
          String message = "Hellooo, alrm worked ----";
          Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
          Intent intent2 = new Intent(context, TripNotification.class); 
          intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intent2);
    }

    public void setAlarm(Context context){
        Log.d("Carbon","Alrm SET !!");

        // get a Calendar object with current time
         Calendar cal = Calendar.getInstance();
         // add 30 seconds to the calendar object
         cal.add(Calendar.SECOND, 30);
         Intent intent = new Intent(context, AlarmReceiver.class);
         PendingIntent sender = PendingIntent.getBroadcast(context, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);

         // Get the AlarmManager service
         AlarmManager am = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
         am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
    }
}

这是我设法运行的最后一段代码。您需要添加

代码语言:javascript
复制
 <receiver  android:process=":remote" android:name="AlarmReceiver"></receiver>

就在清单文件中</application>标记的上方。

这会将警报设置为在调用SetAlarm()方法后30秒内触发

票数 42
EN

Stack Overflow用户

发布于 2012-05-21 20:18:28

到目前为止,不运行应用程序就不能启动警报,您必须运行各自的应用程序才能激活警报。为了这个....!!

ALARM_ACTIVITY中的 :

代码语言:javascript
复制
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

Intent intent = new Intent(ALARM_ACTIVITY.this,ALARM_RECEIVER.class); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(SetReminder.this, ID, intent, PendingIntent.FLAG_UPDATE_CURRENT);

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeInMillis() + 1000, pendingIntent);

ALARM_RECEIVER中的

代码语言:javascript
复制
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

notification = new Notification(R.drawable.alarmicon, "charSequence", System.currentTimeMillis());

notification.setLatestEventInfo(context, "alarmTitle", "charSequence", pendingIntent);

notification.flags |= Notification.FLAG_AUTO_CANCEL;

notificationManager.notify(1, notification);
票数 6
EN

Stack Overflow用户

发布于 2017-01-20 23:45:41

如果它仍然不能工作,摆脱android:process=":remote"部分可能会有所帮助。对我很有效:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10684077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档