尝试使用BroadcastReceiver检测Android中的Internet连接
我正在尝试使用BroadcastReceiver检测Internet连接。我已经编写了所有代码,它在活动中运行良好,但当我在片段中测试此代码时,它不起作用,甚至onNetworkConnectionChanged()在onResume()之后也没有调用。 下面是我的代码类尝试使用BroadcastReceiver检测Android中的Internet连接,android,android-fragments,broadcastreceiver,Android,Android Fragments,Broadcastreceiver,我正在尝试使用BroadcastReceiver检测Internet连接。我已经编写了所有代码,它在活动中运行良好,但当我在片段中测试此代码时,它不起作用,甚至onNetworkConnectionChanged()在onResume()之后也没有调用。 下面是我的代码类 这是AppController.java文件的代码 这是ConnectivityReceiver.java文件的代码 这是CustomerService.java文件的代码(这是片段) 4.最后这是layout_custome
注意:我从一个活动中调用了这个片段
正如我前面提到的,它在活动中工作良好,但在片段中不工作。谢谢您……
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>