ねえ私はbroadcastreceiverからサービスクラスに変数受信を渡す必要があるアプリに取り組んでいます
私はこの投稿を見 ました。Androidでブロードキャストレシーバーからアクティビティに値を渡す方法は? しかし、それは機能しません。
これが私のコードです
public class BatteryReceiver extends BroadcastReceiver {
int batteryLevel;
int batteryScale;
private int status;
private boolean isCharging;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.v("test battery", "battery:" + batteryLevel);
batteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
batteryScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
//Log.v("charging state", "state:" + isCharging);
status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
isCharging = status == BatteryManager.BATTERY_STATUS_FULL||status == BatteryManager.BATTERY_STATUS_CHARGING;
Intent service = new Intent(context, MyService.class);
service.putExtra("BatteryLevel", batteryLevel);
service.putExtra("BatteryScale", batteryScale);
service.putExtra("Charging", isCharging);
context.startService(service);
}
}
3変数を受け取るサービスクラス
public class MyService extends Service {
int batteryLevel;
int batteryScale;
private boolean isCharging;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
batteryLevel = intent.getIntExtra("BatteryLevel", batteryLevel);
batteryScale = intent.getIntExtra("BatteryScale", batteryScale);
isCharging = intent.getBooleanExtra("Charging", isCharging);
Log.v("test battery", "battery:" + batteryLevel);
Log.v("charging state", "state:" + isCharging);
//other method
return Service.START_STICKY;
}
最後に、ログには常にバッテリーレベルが0で、充電状態がfalseであることが示されます。これは、バリバールがサービスに渡されないことを意味します。
人々が私を案内するように、私は上記のように変数に値を割り当てましたが、これはまだ機能しません
これが私のメインフェストです、ここに何か問題があるのではないかと思います
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MyApp">
</activity>
<service
android:name=".MyService"
android:enabled="true">
</service>
<receiver
android:name=".BatteryReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED"></action>
</intent-filter>
</receiver>
</application>
そしてレシーバー部分では、eclispeは「エクスポートされたレシーバーは許可を必要としません」を返します
私のアプリでは、サービスはバックグラウンドで実行され続け、braodcastreceiverから変数を受信して関数を実行しようとします
どちらの部分が間違っているのかわかりません。エラーが発生した場合はお知らせください。ありがとうございます。