Проблема с созданием и регистрацией приемника вещания в Main Activity - PullRequest
0 голосов
/ 27 октября 2018

При запуске приложения приемник широковещательной проверки моей сети вызывает задержку.Поэтому я нашел решение .

Вместо расширения класса BroadcastReceiver и создания NetworkStateChangeReceiver, я создал широковещательный приемник для своей деятельности и зарегистрировал его там.Теперь он работает, и метод onReceive () запускается немедленно.

Я пробовал этот способ, но он перестал работать.Может кто-нибудь, пожалуйста, решить проблему.

Вот код:

  private BroadcastReceiver mNetworkReceiver;
        static TextView tv_check_connection;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv_check_connection=(TextView) findViewById(R.id.tv_check_connection);


            BroadcastReceiver mNetworkReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    try
                    {
                        if (isOnline(context)) {
                            dialog(true);
                            Log.e("Hi", "Online Connect Intenet ");
                        } else {
                            dialog(false);
                            Log.e("Sorry","Conectivity Failure !!! ");
                            Toast.makeText(MainActivity.context,"No internet",Toast.LENGTH_LONG).show();
                        }
                    } catch (NullPointerException e) {
                        e.printStackTrace();
                    }
                }
            };
            registerNetworkBroadcastForNougat();
});

    public static void dialog(boolean value){...}
    private void registerNetworkBroadcastForNougat() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                registerReceiver(mNetworkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                registerReceiver(mNetworkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
            }
        }

        protected void unregisterNetworkChanges() {
            try {
                unregisterReceiver(mNetworkReceiver);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            }
        }

     protected void onDestroy() {
            super.onDestroy();
            unregisterNetworkChanges();}
    private boolean isOnline(Context context) {
            //try {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getActiveNetworkInfo();
            //should check null because in airplane mode it will be null
            return (netInfo != null && netInfo.isConnected());
            //} //catch (NullPointerException e) {
            //e.printStackTrace();
            //return false;
            //}
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...