Mon BroadcastReceiver n'est pas la réception de la BOOT_COMPLETED intention après mon N1 bottes
Je n'arrive pas à obtenir mon BroadcastReceiver méthode onReceive appelée à l'aide de la BOOT_COMPLETED intention.
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...
}
}
oracleicom, comment le problème a été résolu. s'il vous plaît dites
OriginalL'auteur oracleicom | 2010-10-14
Vous devez vous connecter pour publier un commentaire.
Toutes les applications qui reçoivent les
BOOT_COMPLETED
la diffusion doit être installé sur la mémoire interne parce qu'Android offreACTION_BOOT_COMPLETED
diffusées avant le stockage externe est monté sur l'appareil.Pour vous assurer que votre application sera installée sur la mémoire interne, vous avez juste besoin PAS de déclarer la
android:installLocation
manifeste de l'attribut.Une autre option est de définir les éléments suivants dans le manifeste de l'article:
android:installLocation="internalOnly"
Vous pouvez trouver plus d'informations à ce sujet ici.
excellente réponse , je chasse beaucoup et j'ai jusqu'à fin à votre fil
OriginalL'auteur Nikolai Samteladze
EDIT: Oublie tout, j'ai trouvé une meilleure explication.
Vous devez définir votre récepteur avec exporté = vrai et enabled = true
Je pense que si vous modifiez cette ligne
pour cette
il va résoudre votre problème.
Je l'ai essayé sur un de mes projets et il ne démarre pas.
J'ai relu le android de la documentation à ce sujet, et certainement ils disent que les deux sont activés et exportés propriétés sont définies par défaut "vrai"... Encore une fois je me trompe :S. je ne vois pas autre chose d'étrange sur oracleicom du code
Donc changer le nom de la receiever ".WeatherStartupReceiver" même si la classe n'est pas à la racine de mon application dir? La structure de répertoire en cours est <APP_HOME>/receiver/WeatherStartupReceiver.java
J'ai donc essayé de changer le nom du récepteur dans le AndroidManifest mais cela ne fonctionne pas. Juste pour vérifier que je n'étais pas de remarquer que la méthode a été appelée, j'ai changé le récepteur onReceive méthode lève une exception et toujours rien.
RÉSOLU!!! Il n'était pas de travail parce que l'application est en cours d'installation sur la carte SD, ratant ainsi la BOOT_COMPLETED intention. MERCI À TOUS POUR VOTRE AIDE TOUT LE MONDE!
OriginalL'auteur brent