7

No puedo obtener mi método BroadcastReceiver onReceive llamado usando el intento BOOT_COMPLETED.Mi BroadcastReceiver no está recibiendo el intento BOOT_COMPLETED después de mis botas N1

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.jerrellmardis.umbrella" 
     android:versionCode="4" 
     android:versionName="1.0.3"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" 
      android:theme="@android:style/Theme.NoTitleBar"> 
     <activity android:name=".activities.Umbrella" android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".activities.Preferences" android:label="@string/app_name" android:screenOrientation="portrait" /> 
     <receiver android:name="com.jerrellmardis.umbrella.receiver.WeatherStartupReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
     <service android:name=".service.WeatherUpdateService"> 
      <intent-filter> 
       <action android:name="com.jerrellmardis.umbrella.service.WeatherUpdateService" /> 
      </intent-filter> 
     </service> 
    </application> 
    <uses-sdk android:minSdkVersion="3" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
</manifest> 

WeatherStartupReceiver.java

package com.jerrellmardis.umbrella.receiver; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.provider.Contacts.People; 
import android.util.Log; 

import com.jerrellmardis.umbrella.R; 

public class WeatherStartupReceiver extends BroadcastReceiver { 

     private NotificationManager mNotificationManager; 
     private int SIMPLE_NOTFICATION_ID; 

     @Override 
     public void onReceive(Context context, Intent intent) { 
       // Do something interesting here... 
     } 
} 
+0

oracleicom, cómo se resolvió el problema. dígale a –

Respuesta

15

Todas las aplicaciones que reciben la difusión BOOT_COMPLETED deben instalarse en el almacenamiento interno porque Android transmite ACTION_BOOT_COMPLETED antes de que el almacenamiento externo esté montado en el dispositivo.

Para asegurarse de que su aplicación se instalará en la memoria interna, solo necesita NOT para declarar el atributo de manifiesto android:installLocation.

Otra opción es establecer lo siguiente en la sección manifiesta: android:installLocation="internalOnly"

Puede encontrar más información al respecto here.

+0

Su enlace incluye un período que causa a 404. Eliminar el período final resuelve el problema. Editar enviado. – Splaktar

+0

excelente respuesta, yo cazo mucho y termino en tu hilo – Hunt

2

EDIT: Olvídese de todo, he encontrado una mejor explicación.

Usted tiene que definir su receptor con exportados = true y habilitado = true

<receiver android:name="com.jerrellmardis.umbrella.receiver.WeatherStartupReceiver" 
    android:enabled="true" 
    android:exported="true" 
> 

Creo que si cambia esta línea

<receiver android:name="com.jerrellmardis.umbrella.receiver.WeatherStartupReceiver"> 

para este

<receiver android:name=".WeatherStartupReceiver"> 

arreglará su problema.

Lo probé en uno de mis proyectos y no comenzó.

+1

No sé por qué ha tenido problemas, pero ciertamente no he tenido que declarar habilitado y exportado para que mis receptores BOOT_COMPLETED reciban notificaciones. – beekeeper

+0

He vuelto a leer la documentación de Android acerca de esto, y ciertamente dicen que las propiedades habilitadas y exportadas se configuran por defecto como "verdaderas" ... Nuevamente estoy equivocado: S. No veo nada extraño en el código – brent

+0

de Oracleicom. ¿Cambia el nombre del receptor a ".WeatherStartupReceiver" aunque la clase no esté en la raíz de mi directorio de aplicación? La estructura del directorio actual es /receiver/WeatherStartupReceiver.java – oracleicom

Cuestiones relacionadas