0

次のコードを使用する

 Intent i = new Intent(this, BootUpReceiverRecall.class);
        sendBroadcast(i);

 <receiver  android:process=":remote" android:name="BootUpReceiverRecall"></receiver>


public class BootUpReceiverRecall extends BroadcastReceiver 
{
      // Restart service every 30 seconds
      private static final long REPEAT_TIME = 1000 * 30;

      @Override
      public void onReceive(Context context, Intent intent) 
      {
        AlarmManager service = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(context, BootUpReceiver.class);
        PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
            PendingIntent.FLAG_CANCEL_CURRENT);
        Calendar cal = Calendar.getInstance();
        // Start 30 seconds after boot completed
        cal.add(Calendar.SECOND, 30);
        //
        // Fetch every 30 seconds
        // InexactRepeating allows Android to optimize the energy consumption
        service.setInexactRepeating(AlarmManager.RTC_WAKEUP,
            cal.getTimeInMillis(), REPEAT_TIME, pending);

        // service.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
        // REPEAT_TIME, pending);
      }

BootUpReceiverが呼び出されることはありません。私は何が悪いのですか?

4

1 に答える 1

1

AndroidManifest.xmlで適切に定義する必要があります。

<receiver 
android:process=":remote"
android:name=".BootUpReceiverRecall" />

「android:name」タグを見
てください。アプリケーションと同じパッケージに含まれている場合は「BootUpReceiverRecall」の前にドット(「。」)を追加する必要がありますが、そうでない場合はフルネームを使用できます。 「app.package.receivers.BootUpReceiverRecall」のように。

于 2013-01-11T19:37:52.593 に答える