Problemas de BroadcastReceiver en Android 3.1+
Estoy tratando de actualizar los datos de ubicación a una base de datos web utilizandoBroadcastReceiver
yService
.
Sin embargo, estoy teniendo dificultades para hacerlo funcionar con Android 3.2 en un Galaxy Tab 7.0 Plus.
La misma aplicación está funcionando muy bien en un Galaxy Note de Android 2.3.6, pero no se ejecuta en la tableta. De hecho, agrego elRECEIVE_BOOT
acción intencional para mi receptor, pero nunca se crea una instancia, es decir, onReceive()
nunca se llama después de que se complete el arranque. Me pregunto si hay actualizaciones en el sistema que causen esta acción.
Aquí están mis clases de XML y receptor:
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tests.bootreceiver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver
android:name=".BootUpReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service android:name=".MyService" >
</service>
</application>
BootUpReceiver.java
public class BootUpReceiver extends BroadcastReceiver {
private static int INTERVAL = 1000*15;
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), INTERVAL, pi);
}
}
¿Hay alguna razón para que el mismo código funcione en un sistema y no funcione en otro?
¡Gracias!