2011-08-18 19 views
0

は、私は次のように受信機が呼び出される内部ブロードキャスト受信機が動作しませんか?

public class MainActivity extends Activity{ 
    ... 

     class InnerReceiver extends BroadcastReceiver { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
      Log.v("InnerReceiver", "onReceive"); 
      } 
     } 

... 
} 

InnerReceiverインナーレシーバーを作成します。

しかし、内側の受信機が呼び出されることはありません:

AlarmManager mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    PendingIntent pi=PendingIntent.getBroadcast(context, 0, new Intent(context,MainActivity.InnerReceiver.class), 0); 

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
       SystemClock.elapsedRealtime()+1000, 
       10000, 
       pi); 

内部クラスは次のように宣言されています!何か悪いですか?おかげさまで

答えて

0

AndroidManifest.xmlの<receiver>タグに登録するか、registerReceiver()を呼び出して動的に登録する必要があります。

package-privateのように、publicと宣言する必要があります。 Javaアクセス制御hereの詳細を参照してください。

また、sendBroadcast()を呼び出すなど、受信するために何かをブロードキャストする必要があります。