2014-09-03 84 views
0

我有报警管理器的问题。我创建了每15秒重复显示烤面包的闹钟管理器。重新启动后报警管理器不重复

重新启动我的设备后,烤面包可见,但只有一次。即使在重新启动后,我也希望每15秒再重复一遍。

我可以添加什么来解决这个问题?这可能吗?

这里是我的代码(类AlarmReceiver扩展广播接收器):

@Override 
public void onReceive(Context context, Intent intent) { 
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG"); 
    //Acquire the lock 
    wl.acquire(); 

    Toast.makeText(context, "wow", Toast.LENGTH_LONG).show(); 

    //Release the lock 
    wl.release(); 

} 

public void SetAlarm(Context context) 
{ 
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmReceiver.class); 
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15000, pi); 
} 

而且我的AndroidManifest.xml

<receiver android:name=".view.activity.AlarmReceiver" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 

编辑:这个问题的解决是onReceiver()编辑代码:

@Override 
public void onReceive(Context context, Intent intent) { 
    if(intent.getAction()==null){ 
     Toast.makeText(context, "lol", Toast.LENGTH_LONG).show(); 

    } else 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent intent1 = new Intent(context, AlarmReceiver.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent1, 0); 
     am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15000, pi); 
    } 

} 
+1

由于您的报警意图是显式调用接收器,你不需要自定义操作。只需检查'onReceive()'中的Intent操作是否为空。如果是,请显示吐司;否则请调用您的方法来设置闹钟。 – 2014-09-03 18:29:27

+0

这是完美的工作!谢谢! – DivinaProportio 2014-09-03 18:47:13

回答

1

看来你只需要在onReceive中调用你的SetAlarm函数方法,并监听清单中发送的事件。

在您的清单

<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
    //New 
    <action android:name="com.packagename.custombroadcast" /> 
</intent-filter> 

当你的意图

Intent intent = new Intent(); 
intent.setAction("com.packagename.custombroadcast"); 
//Use Context.sendBroadcast 
sendBroadcast(intent); 
+0

好吧,我想过了,但我希望可能会有更好的解决方案来实现这一点。谢谢你的答案 ;-) – DivinaProportio 2014-09-03 18:13:36