0

私にはまだはっきりしないことがあります。バッテリーレベルを監視する必要があり、サービス内で onCreate に次の行を書きました。

public void onCreate(){
   super.onCreate();
   mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
   new IntentFilter(Intent.ACTION_BATTERY_CHANGED);    
}

次に、マニフェストで:

<receiver android:name=".ReceversAndServices.BatteryLevelReceiver">
  <intent-filter>
    <action android:name="android.intent.action.BATTERY_CHANGED" />
    <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
</receiver>

私が理解していないのは..インテントIntent.ACTION_BATTERY_CHANGEDをJavaとandroid.intent.action.BATTERY_CHANGEDマニフェストに書くのは正しいですか? それとも1つだけ必要ですか?

4

3 に答える 3

3

インテント フィルターの使用を計画している場合は、常にIntentドキュメントを確認してください。マニフェスト インテント フィルターでブロードキャストを取得できない場合は、通常、ドキュメントに記載されています。たとえば、BATTERY_CHANGEDブロードキャスト アクションは次の情報を提供します。

Context.registerReceiver() で明示的に登録するだけで、マニフェストで宣言されたコンポーネントを介してこれを受け取ることはできません。

于 2013-08-21T15:11:50.167 に答える
1

どちらの方法も正しいです。マニフェスト ファイルまたは Java ファイルに記述できます。
一部のアクセス許可は、マニフェスト ファイルに書き込む必要があります。

于 2013-08-21T15:13:13.723 に答える
1

1つだけ必要です。マニフェストに書き込むと、アプリがインストールされるとすぐにアクティブになります。Java コードに配置すると、作成されたアクティビティ/サービスが実行されている場合にのみアクティブになります。

于 2013-08-21T15:09:27.787 に答える