Вместо динамической регистрации я хочу статически зарегистрировать ресивер. Для динамической регистрации, он хорошо работает, я использую это:Каков правильный способ статической регистрации пользовательского широковещательного приемника в Android?
..
static private IntentFilter GPSActionFilter;
..
GPSActionFilter = new IntentFilter("GGPS Service");
context.registerReceiver(GPSActionReceiver, GPSActionFilter);
..
static private BroadcastReceiver GPSActionReceiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) { ..}
Для статической регистрации, отладчик никогда не попадет в OnReceive функции, я использую это:
В AndoridManifest:
<receiver android:name="LocationListener$GPSActionReceiver" >
<intent-filter>
<action android:name="LocationListener.ACTION_GPS_SERVICE" />
</intent-filter>
</receiver>
В коде:
public class LocationListener extends BroadcastReceiver
{
public static IntentFilter GPSActionFilter;
public static final String ACTION_GPS_SERVICE = "com.example.LocationListener.GPSActionFilter";
public static BroadcastReceiver GPSActionReceiver;
public void onReceive(final Context context, final Intent intent)
{..}
}
Спасибо за это предложение. Я включил его. По моему мнению, широковещательная услуга широковещательная и приемник регистрируется для прослушивания одного конкретного намерения, то есть ACTION_GPS_SERVICE. Это так? Или слушатель слушает все трансляции? Если нет, ACTION_GPS_SERVICE нужно будет определить службой вещателя, не так ли? – user1736947
Радиовещательный приемник будет прослушивать только намерение с помощью действия com.example.LocationListener.ACTION_GPS_SERVICE, поэтому вещателю необходимо будет отправить намерение с этим действием. Служба вещателя может отправлять широковещательную передачу следующим образом: context.sendBroadcast (новый Intent (LocationListener.GPS_SERVICE)); –