К сожалению приложение прекращается при проверке сети

Я использую следующий код, чтобы проверить подключение к Интернету в моем приложении.

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, я получаю сообщение «UNFORTUNATELY APP STOPPED», и я не получаю никакой печати в logcat. Могу ли я узнать, в чем ошибка, которую я делаю?

Solutions Collecting From Web of "К сожалению приложение прекращается при проверке сети"

Вы добавили это в 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); } } 

ПРИМЕЧАНИЕ. Если вы настроили таргетинг на андроид N Preview. Вышеуказанный приемник не будет работать с ограничениями, ограниченными 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) и выше, не получают эту трансляцию, если объявляют вещательный приемник в своем манифесте. Приложения будут по-прежнему получать трансляции, если они регистрируют свой BroadcastReceiver с помощью Context.registerReceiver (), и этот контекст остается в силе.

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