Приемник вещания для GPS и сети - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь определить состояние сети и GPS, и я хочу попросить пользователя включить их, если они отключены.

Это мой первый раз, когда я использую BroadcastReceiver, я прочиталдокументацию и создал этот метод.

Я хочу создать ДИНАМИЧЕСКИЕ ПРИЕМНИКИ, а не STATIC.

Не могли бы вы помочь мне исправить метод, потому что они не работают должным образом, и я незнать, в чем проблема.

// Класс BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        LocationManager locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
        Intent newintent;
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
            newintent = new Intent();
            intent.putExtra("Network", "CONNECTIVITY");
            context.sendBroadcast(newintent);
        }

        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            newintent = new Intent();
            intent.putExtra("GPS", "GPSPROVIDER");
            context.sendBroadcast(newintent);
        }
    }
}

// Активность, в которой я хочу, чтобы этот приемник работал:

MyBroadcastReceiver broadcastReceiver = new MyBroadcastReceiver();
@Override
protected void onStart() {
    super.onStart();

    IntentFilter filter = new IntentFilter();
    registerReceiver(broadcastReceiver, filter);
    Log.d(TAG, "onStart: broadcastReceiver Start");
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String newtork = extras.getString("Network");
        String gps = extras.getString("GPS");
        if(newtork == "CONNECTIVITY" || gps == "GPSPROVIDER"){
            Log.d(TAG, "onStart: Something Change");
            checkServices();
        }
    }
}

1 Ответ

0 голосов
/ 01 января 2019

Первая проблема, которую я вижу, состоит в том, что ваш фильтр намерений не включает никаких действий.Вы, вероятно, хотите что-то вроде этого:

IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(broadcastReceiver, filter);

Вторая проблема - это новое намерение, которое вы создаете, а затем отправляете в виде широковещания, не определяя действие.Он содержит только дополнения.Вы захотите сделать что-то вроде этого:

 newintent = new Intent("SOME_ACTION");
 newintent.putExtra("Network", "CONNECTIVITY");
 context.sendBroadcast(newintent);

И затем вам нужно будет определить получателя, который может получать SOME_ACTION.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...