Я пытаюсь использовать run code
, когда пользователь plug or unplug
его мобильный. Я думал, что смогу добиться этого, создав трансляционный транслятор и установив триггер в Manifest до android.intent.action.BOOT_COMPLETED
.
Затем запустите Службу из этого BOOT_COMPLETED RECEIVER и отлаживайте debugmessage.
Я запустил еще один широковещательный приемник из Сервиса для android.intent.action.ACTION_POWER_CONNECTED
и android.intent.action.ACTION_POWER_DISCONNECTED
.
Everthing идет хорошо, и сообщения отладки были переданы, Служба выполнила startprocess для ACTION_POWER
broadcastreceiver, но приемник не запускается. Кто-нибудь понял, как это исправить?Запуск BroadcastReceiver при загрузке
Код:
Manifest:
<application
...
<receiver
android:name="de.mrglue.nfc.BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
<service android:name="de.mrglue.nfc.BootService" >
</service>
</application>
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
BootReceiver:
public class BootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//Can't toast here
//Starting service
context.startService(new Intent(context, BootService.class));
}
Услуги:
public class BootService extends Service{
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Starting second Receiver!", Toast.LENGTH_LONG).show();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(new PowerConnectionReceiver(), filter);
Toast.makeText(this, "done!", Toast.LENGTH_LONG).show();
stopSelf();
return START_NOT_STICKY;
}
}
BatteryReceiver:
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
Toast.makeText(context, "CHARGE" + isCharging, Toast.LENGTH_LONG).show();
}
}
И что READ_PHONE_STATE связано с моей целью? – MrGlue