不幸的是,应用程序正在检查networking时停止

我正在使用下面的代码来检查整个我的应用程序的互联网连接。

import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.widget.Toast; public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void onReceive( Context context, Intent intent ) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE ); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo (ConnectivityManager.TYPE_MOBILE ); if ( activeNetInfo != null ) { Toast.makeText( context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show(); } if( mobNetInfo != null ) { Toast.makeText( context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show(); } } } 

我已经在清单文件中定义了所需的权限

每当我尝试断开/使用F8键连接networking,我将收到“不确定应用程序已停止”,我没有得到任何打印logcat。 我能知道我在做什么错误吗?

Solutions Collecting From Web of "不幸的是,应用程序正在检查networking时停止"

你有没有在androidmanifest.xml添加这个

 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

如果你已经添加上面,然后检查这个代码:

 <receiver android:name=".UpdateReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> 

 public class UpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE ); NetworkInfo activeNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); boolean isConnected = activeNetInfo != null && activeNetInfo.isConnectedOrConnecting(); if (isConnected) Log.i("NET", "connecte" +isConnected); else Log.i("NET", "not connecte" +isConnected); } } 

注意:如果您的目标是Android N预览。 以上接收器将不会按照Google的限制进行工作。 链接: https : //developer.android.com/preview/features/background-optimization.html#connectivity-action

上面的代码无法正常工作的Wi – Fi连接。 这是修改的

简单的一个

。 AndroidManifest.xml中

 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

androidmanifest.xml的应用程序标签内

 <receiver android:name="android.YOUR-JAVA-CLASS-PATH.BackgroundSync" android:enabled="true"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> 

BackgroundSync.java

 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.util.Log; import android.widget.Toast; public class BackgroundSync extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager cm =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm.getActiveNetworkInfo()!=null){ Toast.makeText(context, "Connected to Internet", Toast.LENGTH_LONG).show(); } else Log.i("INTERNET","---------------------> Internet Disconnected. "); } } 

面向Android 7.0(API级别24)及更高版本的应用程序如果在其清单中声明广播接收器,则不会收到此广播。 如果使用Context.registerReceiver()注册BroadcastReceiver,并且该上下文仍然有效,应用程序仍然会收到广播。

https://developer.android.google.cn/reference/android/net/ConnectivityManager.html?hl=zh-cn#CONNECTIVITY_ACTION