Эй, я работаю над приложением, которое нужно передать переменный получить от BroadcastReceiver к классу обслуживанияAndroid не выдержали переменный от радиовещательного приемника к другому классу
У меня есть просмотреть эту How to pass value from Broadcast receiver to Activity in 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;
}
В конце журнала всегда показывают batterylevel является 0, и состояние зарядки является ложным, что означает, varibale не переходят к sercive
Как люди ведут меня, я назначил значение переменной как показано выше, но это все еще не работает
вот мой MainFest, я думаю, что там может быть что-то здесь
<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 «экспортированный приемник не требует разрешения»
В моем приложении служба будет продолжать работать в backgroud и попытаться получить переменную от braodcastreceiver для выполнения функции
Я не уверен, какую часть я делаю неправильно, если yo u пятно ошибка plase, дайте мне знать, спасибо вам большое.
Вы объявили услугу в своем AndroidManifest.xml? – pixelscreen
в службе, которую вы не назначаете значения, поскольку они являются значениями по умолчанию, равными 0, если они были объектами, вы получили бы исключение nullpointer. – Tancho
@Dya У меня есть вопрос, я думаю, может быть, что-то не так в моем mainfest, так как после присваивания значения он все равно не reutrn ни одного значения –