2015-05-30 130 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。它應該工作。 –