De todo lo que he visto en Stack Exchange y en otros lugares, tengo todo configurado correctamente para iniciar un IntentService cuando se inicia el sistema operativo Android. Desafortunadamente, no se inicia al arrancar y no recibo ningún error. Quizás los expertos puedan ayudar ...
Manifiesto:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.phx.batterylogger"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".BatteryLogger"/>
<receiver android:name=".StartupIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
BroadcastReceiver para el inicio:
package com.phx.batterylogger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartupIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, BatteryLogger.class);
context.startService(serviceIntent);
}
}
ACTUALIZACIÓN : probé casi todas las sugerencias a continuación y agregué registros como Log.v("BatteryLogger", "Got to onReceive, about to start service");
el controlador onReceive de StartupIntentReceiver, y nunca se registra nada. Así que ni siquiera está llegando al BroadcastReceiver.
Creo que estoy implementando el APK y probando correctamente, solo ejecuto Debug en Eclipse y la consola dice que lo instaló correctamente en mi tableta Xoom en \ BatteryLogger \ bin \ BatteryLogger.apk. Luego, para probar, reinicio la tableta y luego miro los registros en DDMS y verifico los servicios en ejecución en la configuración del sistema operativo. ¿Todo esto suena correcto o me falta algo? Una vez más, se agradece mucho cualquier ayuda.
Log.v("BatteryLogger", "Got to onReceive, about to start service");
al controlador de OnReceive, y nunca aparece en los registros. Entonces el oyente está fallando (?)Respuestas:
Bueno, aquí hay un ejemplo completo de una aplicación de inicio automático
Archivo AndroidManifest
autostart.java
service.java
hello.java : aparecerá cada vez que inicie el dispositivo después de ejecutar la aplicación una vez.
fuente
Es posible que su servicio se cierre antes de que se complete debido a que el dispositivo se pone en suspensión después del inicio. Primero debe obtener un bloqueo de activación. Afortunadamente, la biblioteca de soporte nos da una clase para hacer esto:
luego, en su Servicio, asegúrese de liberar el bloqueo de activación:
No olvide agregar el permiso WAKE_LOCK:
fuente
Lo siguiente debería funcionar. Lo he verificado. Puede que tu problema esté en otro lugar.
fuente
Log()
declaraciones está allí y el dispositivo emulador no muestra que mi servicio se esté ejecutando en la configuración del sistema operativo. Aquí está el error en DDMS:System.err - at com.phx.batterylogger$1.onReceive(BatteryLogger.java:43)
¿ Eso significa que el problema está en la línea 43 de mi servicio BatteryLogger?Encontré una manera de hacer que su aplicación funcione bien cuando el dispositivo se reinicia, siga los pasos a continuación para tener éxito.
Archivo AndroidManifest
UIBootReceiver
Se solicita permiso para no tener que administrar el ahorro de batería para esta aplicación para que pueda ejecutarla en segundo plano de manera estable.
Declare este código en onCreate () de la clase MainActivity:
fuente
Parece muy similar al mío, pero uso el nombre completo del paquete para el receptor:
Yo tengo:
fuente
Tuve éxito sin el paquete completo, ¿sabe dónde se interrumpe la cadena de llamadas? Si depura con
Log()
's, ¿en qué momento deja de funcionar?Creo que puede estar en su IntentService, todo esto se ve bien.
fuente
Log.v("BatteryLogger", "Got to onReceive, about to start service");
al controlador de OnReceive, y nunca aparece en los registros. Entonces el oyente está fallando (?)Solo para facilitar la búsqueda, como se menciona en los comentarios,
esto no es posible desde 3.1https://stackoverflow.com/a/19856367/6505257fuente