2011-08-18 181 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()