2011-08-18 91 views
0

我创建一个内部接收器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); 

内部类被声明为:

然而,内部接收器不会被调用!有什么问题吗 ? 谢谢。

回答

0

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

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

您还需要广播某些内容以供接收,例如致电sendBroadcast()