Я новичок в android разработке. Я выполняю упражнение, в котором задача заключается в создании приемника вещания, который проверяет, включено ли устройство или выключено. Кажется, что получатель широковещания, который я определил, на самом деле не получает отправляемые широковещательные сообщения. Цель состоит в том, чтобы создать кнопки, которые запускают и останавливают службу, которая, в свою очередь, запускает и останавливает приемник вещания.
Сервисный код:
public class BRBootstrap extends IntentService {
private MyReceiver myReceiver;
private final IBinder mBinder = new MyBinder();
public BRBootstrap() {
super("BRBootstrap");
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public class MyBinder extends Binder {
BRBootstrap getService() {
return BRBootstrap.this;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Starting", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Toast.makeText(this, "Service Stopping", Toast.LENGTH_LONG).show();
unregisterReceiver(myReceiver);
}
public void startActionBroadcast(Intent intent) {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(myReceiver, filter);
Toast.makeText(this, "Broadcast Receiver is on", Toast.LENGTH_SHORT).show();
//sendBroadcast(intent);
}
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
startActionBroadcast(intent);
Toast.makeText(this, "Sending Broadcast", Toast.LENGTH_LONG).show();
sendBroadcast(intent);
/*final String action = intent.getAction();
if (action.equals("startBroadcast")) {
Toast.makeText(this, "Starting Broadcast", Toast.LENGTH_LONG).show();
//startActionBroadcast(intent);
} else if (action.equals("endBroadcast")) {
Toast.makeText(this, "Stopping Broadcast", Toast.LENGTH_LONG).show();
}*/
}
}
}
Код BroadcastReceiver:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "AHHGSHHGG", Toast.LENGTH_LONG).show();
// TODO: This method is called when the BroadcastReceiver is receiving
Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();
Log.i("ACTION SHIT", intent.getAction());
if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Log.i("DEVICE IS", "OFF");
}
else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Toast.makeText(context, "DEVICE IS ON", Toast.LENGTH_LONG).show();
}
else {
return;
}
}
}
Я пытался найти ответы на многие вопросы, связанные с этим, но ни один из них не помог мне (может быть, я пробовал слишком много разных комбинаций?)
Любая помощь будет принята с благодарностью!