Broadcast Receiver, чтобы проверить, включено ли устройство - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок в 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;
        }
    }
}

Я пытался найти ответы на многие вопросы, связанные с этим, но ни один из них не помог мне (может быть, я пробовал слишком много разных комбинаций?)

Любая помощь будет принята с благодарностью!

...