2016-08-13 79 views
0

我想用以下触发一次性警报,这基本上是从https://developer.android.com/training/scheduling/alarms.html(第二个ELAPSED_REALTIME_WAKEUP示例)的复制。AlarmManager一次警报不会触发

这是公共静态类PlaceholderFragment内延伸片段实现View.OnClickListener:

@Override 
    public void onClick(View v) { 
     Intent intent; 
     intent = new Intent(this.getActivity(), MuteReceiver.class); 
     AlarmManager alm = (AlarmManager)(this.getActivity().getSystemService(Context.ALARM_SERVICE)); 
     PendingIntent alarmIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0); 
     alm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      SystemClock.elapsedRealtime() + 60*1000, 
      alarmIntent); 
     Log.d("MainActivity", "alarm set"); 
    } 

公共类MuteReceiver扩展广播接收器是这样的:

public MuteReceiver() { 
    Log.d("MuteReceiver", "constructed"); 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    boolean started = prefs.getBoolean(MuteService.STARTED, false); 
    Log.d("MuteReceiver", "Started=" + started); 
} 

我按在片段中的按钮,锯日志消息“alarm set”,但一分钟后(还有很久),仍然没有关于正在构建的MuteReceiver或MuteReceiver的启动日志(在onReceive中)

+0

你是否在清单中注册了'MuteReceiver'? – Shaishav

回答

0

你有一个有注册广播的保证列表文件

+0

我认为你的意思是AndroidManifest.xml中的一个条目。我已经添加并且工作。我会接受你的答案,但有新问题,或许我会在发布另一个问题之前尝试修复。 – cpliu338