尝试使用BroadcastReceiver检测Android中的Internet连接

尝试使用BroadcastReceiver检测Android中的Internet连接,android,android-fragments,broadcastreceiver,Android,Android Fragments,Broadcastreceiver,我正在尝试使用BroadcastReceiver检测Internet连接。我已经编写了所有代码,它在活动中运行良好,但当我在片段中测试此代码时,它不起作用,甚至onNetworkConnectionChanged()在onResume()之后也没有调用。 下面是我的代码类 这是AppController.java文件的代码 这是ConnectivityReceiver.java文件的代码 这是CustomerService.java文件的代码(这是片段) 4.最后这是layout_custome

我正在尝试使用BroadcastReceiver检测Internet连接。我已经编写了所有代码,它在活动中运行良好,但当我在片段中测试此代码时,它不起作用,甚至onNetworkConnectionChanged()在onResume()之后也没有调用。

下面是我的代码类

  • 这是AppController.java文件的代码
  • 这是ConnectivityReceiver.java文件的代码
  • 这是CustomerService.java文件的代码(这是片段)
  • 4.最后这是layout_customer_service.xml文件的代码

    
    
    注意:我从一个活动中调用了这个片段

    正如我前面提到的,它在活动中工作良好,但在片段中不工作。谢谢您……

    public class AppController extends Application {
        static AppController mInstance;
        private static final String TAG = "AppController";
    
        @Override
        public void onCreate() {
            super.onCreate();
            mInstance = this;
        }
    
        public static synchronized AppController getInstance() {
            return mInstance;
        }
    
        public void setConnectivityListener(ConnectivityReceiver.ConnectivityReceiverListener listener) {
            ConnectivityReceiver.connectivityReceiverListener = listener;
        }
    
        public void showSnackBar(boolean isConnected, View view) {
            String msg = "";
            if (isConnected) {
                Log.e(TAG, "showSnackBar: connected with internet ");
            } else {
                msg = "Something went wrong, Please check your Internet Connetion!";
                Log.e(TAG, "showSnackBar: no internet connection");
            }
            Snackbar snackbar = Snackbar.make(view, msg, Snackbar.LENGTH_INDEFINITE);
            snackbar.setAction("OK", new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                }
            });
            snackbar.setActionTextColor(Color.WHITE);
            View view1 = snackbar.getView();
            TextView textView = (TextView) view1.findViewById(android.support.design.R.id.snackbar_text);
            textView.setTextColor(Color.RED);
            snackbar.show();
        }
    
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(base);
        }
    }
    
    public class ConnectivityReceiver extends BroadcastReceiver {
        public static ConnectivityReceiverListener connectivityReceiverListener;
    
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            boolean isCOnnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
            if (connectivityReceiverListener != null) {
                connectivityReceiverListener.onNetworkConnectionChanged(isCOnnected);
            }
        }
    
        public static boolean isConnected() {
            ConnectivityManager cm = (ConnectivityManager) AppController.getInstance().getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
            return isConnected;
        }
    
        public interface ConnectivityReceiverListener {
            void onNetworkConnectionChanged(boolean isConnected);
        }
    }
    
    public class CustomerService extends Fragment implements ConnectivityReceiver.ConnectivityReceiverListener {
        private static final String TAG = "CustomerService";
        LinearLayout linearLayout;
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            View view=inflater.inflate(R.layout.layoyt_customer_service, container, false);
            linearLayout=(LinearLayout)view.findViewById(R.id.linear_layout_customer);
            return view;
        }
    
        @Override
        public void onResume() {
            super.onResume();
            Log.e(TAG, "onResume: Calling");
            AppController.getInstance().setConnectivityListener(this );
        }
    
        @Override
        public void onNetworkConnectionChanged(boolean isConnected) {
            Log.e(TAG, "onNetworkConnectionChanged: " );
            AppController.getInstance().showSnackBar(isConnected, linearLayout);
        }
    }
    
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/linear_layout_customer"
            android:orientation="vertical">
        
        </LinearLayout>