1

По какой-то причине мой приемник смены сети не работает и не транслирует CONNECTIVITY_CHANGE в мой класс NetworkStateReceiver в моем приложении для Android. Я проверил, что это просто проблема с моим диалоговым окном, но Log.d, которые должны быть распечатаны, не являются.Невозможно изменить широковещательную передачу в Интернете

Вот код для AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<receiver android:name="com.main.main.NetworkStateReceiver"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 

Вот код для NetworkStateReceiver.java:

package com.main.main; 

import android.app.AlertDialog; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.util.Log; 

public class NetworkStateReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(final Context context, final Intent intent) { 
    final AlertDialog dialog = new AlertDialog.Builder(context) 
      .setTitle("Connection Failed") 
      .setMessage("Please Check Your Internet Connection") 
      .setPositiveButton("Try Again", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        //Code for try again 
       } 
      }) 
      .setNegativeButton("Exit", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 

       } 
      }).create(); 
    if (intent.getExtras() != null) { 
     final ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     final NetworkInfo ni = connectivityManager.getActiveNetworkInfo(); 
     if (ni != null && ni.isConnectedOrConnecting()) { 
      Log.d("INTERNET_MESSAGE", "Connected to internet"); 
      dialog.dismiss(); 
     } else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) { 
      Log.d("INTERNET_MESSAGE", "Disconnected from internet"); 
     } 
    } 
} 

}

+2

где is dialog.show(); ?? журналы не отображаются, потому что оба условия не верны, добавьте лишний конец и снова проверьте. –

+0

@DhawalSodhaParmar ОК, я добавил еще в конце вместе с журналом, и журнал печатает. Не могли бы вы вставить исправленный блок if и else if, который будет работать для определения наличия интернет-соединения или нет? – fedorp1

+0

проверить один из моих ответов http://stackoverflow.com/a/15546897/1168654 –

ответ

2

лучше, чтобы проверить подключения к Интернету следующим образом:

Просто сделайте одну общую функцию в общем классе полезности в

/* 
* A Common function to check internet connection. 
* */ 
public static boolean isOnline(Context c) { 
    try { 
     ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
      return true; 
     } 
     return false; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
} 

Теперь, использовать его там, где вам требуется подключение к Интернету в вашем коде, как показано ниже:

 if (isOnline(YourActivity.this)) { 
      //Your Tasks.. 
     } else { 
      //Display your AlertBox.. 
     } 
1

Вам необходимо включить ресивер в манифесте .. он будет работать ..

<receiver android:name="com.main.main.NetworkStateReceiver" 
      android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 
+0

Хороший улов ... но 'android: enabled' истинно по умолчанию и просто позволяет системе андроидировать приемник. Я думаю, вы имели в виду «android: exported», который позволяет получателю получать события, которые поступают извне приложения (что и требует OP). Добавляем к моему ответу. – rothloup

+0

Вы зарегистрировали и отменили регистрацию своего слушателя в своем жизненном цикле деятельности? – user2906641

 Смежные вопросы

  • Нет связанных вопросов^_^