内部广播接收器不起作用?

时间:2011-08-18 04:59:40

标签: android broadcastreceiver inner-classes

我创建了一个内部接收器InnerReceiver

  public class MainActivity extends Activity{
  ...

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

 ...
 }

接收者被称为:

   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);

内部类声明为:     

但是,内部接收器永远不会被调用!有什么问题吗 ? 感谢。

1 个答案:

答案 0 :(得分:0)

您需要在AndroidManifest.xml的<receiver>标记中注册,或通过调用registerReceiver()动态注册。

可能需要声明public,而不是package-private。查看有关Java访问控制here的更多信息。

您还需要播放要接收的内容,例如致电sendBroadcast()