2012-02-03 4 views
0

J'essaie de configurer un récepteur d'alarme juste après le démarrage. Par conséquent, j'ai un OnBootReceiver qui devrait enregistrer l'alarme. Le onBootReceiver fonctionne et il est appelé, mais de toute façon il ne peut pas trouver ma classe AlarmReceiver.OnBootReceiver fonctionne, mais ne trouve pas AlarmReceiver

OnBootReceiver qui démarre avec succès après le démarrage:

public class OnBootReceiver extends BroadcastReceiver { 

    private static final String TAG = "OnBootReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "called"); 

     Intent i = new Intent(context, com.packagenames.AlarmReceiver.class); 
     PendingIntent pi = PendingIntent.getService(context, 0, i, 0); 
     AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     Calendar time = Calendar.getInstance(); 
     time.setTimeInMillis(System.currentTimeMillis()); 
     time.add(Calendar.SECOND, 30); 

     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), time.getTimeInMillis(), pi); 

    } 

} 

Comme vous vous pouvez le voir, il configure l'alarme essaie d'appeler com.packagenames.AlarmReceiver.class. Cette classe existe et se trouve dans le même package:

public class AlarmReceiver extends BroadcastReceiver { 

    private static final String TAG = "AlarmReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "alarm received"); 
     Intent i = new Intent(context, com.packagename.DataService.class); 
     i.putExtra("action", "process"); 
     context.startService(i); 
    } 

} 

Malheureusement, je reçois l'erreur suivante:

02-03 09:22:25.344: W/ActivityManager(103): Unable to start service Intent { flg=0x4 cmp=com.phonegap.packagename/.AlarmReceiver (has extras) }: not found

Le Manifest Android ressemble à ce

<application> 

// activities etc 

     <receiver 
      android:name="com.phonegap.packagename.OnBootReceiver" 
      android:enabled="true" 
      android:exported="false" 
      android:label="OnBootReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

     <receiver 
      android:name="com.phonegap.packagename.AlarmReceiver" 
      android:enabled="true" 
      android:label="AlarmReceiver"> 
      <intent-filter> 
      </intent-filter> 
     </receiver> 

    </application> 

Voyez-vous une erreur? Peut-être que j'ai oublié quelque chose?

Merci

modifier: dans le manifeste, j'ai ajouté

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

afin de rendre le travail de OnBootReceiver. Ai-je besoin de quelque chose de similaire pour l'alarme?

+0

Vous ne devriez pas avoir à ajouter quoi que ce soit pour votre alarme. – JoxTraex

+0

[http://stackoverflow.com/questions/4459058/alarm-manager-example/8801990#8801990][1] [1]: http://stackoverflow.com/questions/4459058/alarm-manager- exemple/8801990 # 8801990 – XXX

Répondre

1

Ne devriez-vous pas utiliser getBroadcast au lieu de getService lors de la création d'une intention en attente?

0

L'ensemble des éléments du récepteur fonctionne UNIQUEMENT si votre application n'est PAS installée sur une carte SD. Ajoutez ceci à votre fichier manifeste de le faire:

android: installLocation = « InternalOnly »

Questions connexes