2015-05-30 102 views
0

我已经使用广播接收器与警报管理器每60秒击中web服务,似乎它的工作正常,当我在不同类中使用我的广播接收器时,但它没有调用当我声明一个接收器在我的活动我的广播接收器没有收到

我的代码如下

public static void startAlarm(Context context) { 
     Intent locationAlarm = new Intent(context, GetLocation.class); 
     AlarmManager alarms = (AlarmManager) context 
       .getSystemService(Context.ALARM_SERVICE); 
     Calendar updateTime = Calendar.getInstance(); 

     PendingIntent recurringAlarm = PendingIntent.getBroadcast(context, 0, 
       locationAlarm, PendingIntent.FLAG_CANCEL_CURRENT); 

     alarms.setRepeating(AlarmManager.RTC_WAKEUP, 
       updateTime.getTimeInMillis() + 500, UPDATE_INTERVAL, 
       recurringAlarm); 
    } 

广播接收器:

public class GetLocation extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      LogUtil.d("Started Service"); 
     } 

    } 

我的清单文件:

<receiver android:name="com.sample.sample.listeners$GetLocation" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

好心纠正我的错误。我的开始服务方法从未叫过

+2

如果你要注册一个接收器是一个内部类中体现你的活动,它需要一个'公共静态class',它的'name'属性就像'“.MainActivity $ GetLocation”'。 –

+0

@MikeM。谢谢你的回答是有道理的。让我看看它 – Madhu

回答

1

您在清单文件中有错字。你已经把$的getLocation代替.GetLocation

<receiver android:name="com.sample.sample.listeners.GetLocation" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 
+1

即使它不工作。其实我的接收器类是在里面的活动,我已经开始我的闹钟经理 – Madhu

+0

当我使用不同的类它的工作正常..但我需要在同一活动中做 – Madhu

+0

然后,你需要声明你的GetLocation类为一个**静态类**,因为$用于引用静态内部类。此外,在你清单更改名称<您的外部类的路径> $ GetLocation。它应该工作。 –