Как подсчитать количество изменений подключения к Интернету в приложении для Android

Я могу определить, подключено ли приложение к Wi-Fi или мобильной сети. Но я не могу зарегистрировать, сколько раз интернет-соединение переключается с Wi-Fi на мобильную сеть или наоборот. Чтобы зарегистрировать изменение сети, мне нужно проверить подключено ли оно к WiFi или мобильному устройству. Как позже мне нужно проверить, подключено ли приложение от WiFi к мобильному телефону или наоборот?

Я хочу подсчитать, сколько раз меняется подключение к Интернету, которое происходит в приложении для Android.

Фрагмент кода, который я написал, выглядит следующим образом: { public void onReceive (конечный контекст контекста, окончательное намерение) {

    final ConnectivityManager connMgr = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo wifi = connMgr .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    final android.net.NetworkInfo mobile = connMgr .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    SharedPreferences pref =this.getApplicationContext.getSharedPreferences("network_change_count", Context.MODE_PRIVATE);
    int count = pref.getInt("networkchange", 0);
    pref.edit().putInt("networkchange", ++count).apply();
       // return pref.getInt("networkchange", count);
    }

} }

Я зарегистрировал приемник в файле манифеста. Но теперь я получаю исключение nullPointerexception, когда пытаюсь вызвать значение общего предпочтения.

SharedPreferences pref = this.getApplicationContext.getSharedPreferences("network_change_count", Context.MODE_PRIVATE); intconnectionchange=pref.getInt("networkchange", 0);

Могу ли я узнать, в чем ошибка, которую я сделал в этом коде?

Пожалуйста, дайте мне предложения :)


person padma    schedule 23.01.2018    source источник
comment
Опубликуйте что-нибудь, что вы пробовали.   -  person Tenten Ponce    schedule 23.01.2018


Ответы (1)


Попробуйте этот метод.

registerReceiver(networkBroadcastReceiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));

Вам позвонят здесь после изменения подключения.

BroadcastReceiver networkBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        count++;
    }
};
person Muhammed Arshad K    schedule 23.01.2018
comment
могу ли я получить ссылку, которая ясно объясняет приведенный выше код, поскольку я новичок, я не могу так легко понять - person padma; 23.01.2018
comment
обратитесь к этому. надеюсь, это поможет androhub.com/ - person Muhammed Arshad K; 23.01.2018
comment
arshad Где мне нужно включить этот оператор /*registerReceiver(networkBroadcastReceiver, new IntentFilter(android.net.conn.CONNECTIVITY_CHANGE));*/ - person padma; 23.01.2018
comment
registerReceiver в onStart и отмена регистрации в onStop - person Muhammed Arshad K; 23.01.2018
comment
Аршад, я также могу использовать этот метод регистрации в действии? если я сделаю это, счет увеличится только один раз, а затем выйдет из цикла - person padma; 23.01.2018
comment
Ты сможешь. Всякий раз, когда обнаруживается изменение сети, этот метод вызывается, и счетчик увеличивается. - person Muhammed Arshad K; 23.01.2018
comment
аршад тут не надо писать код для обнаружения любых изменений в сети кн? - person padma; 23.01.2018
comment
Можем ли мы сохранить количество изменений подключения в общих настройках? - person padma; 12.03.2018
comment
Да, вы можете сохранить его - person Muhammed Arshad K; 12.03.2018
comment
Аршад, почему значение в общих настройках увеличивается дважды? в чем может быть проблема? - person padma; 26.03.2018
comment
Пожалуйста, отладьте и проверьте его. Может быть, вы что-то упускаете - person Muhammed Arshad K; 27.03.2018
comment
SharedPreferences pref =context.getSharedPreferences(network_change_count, Context.MODE_PRIVATE); SharedPreferences.Editor editor=pref.edit(); инкрементный счетчик сети = инкрементированный счетчик сети + 1; pref.edit().putInt(networkchange,incrementedNetworkCount).apply(); editor.putInt (изменение сети, incrementedNetworkCount); редактор.коммит(); - person padma; 27.03.2018