Я проверяю подключение устройства, как предложено в this question со следующим кодом:Мониторинг подключения к Интернету каждый раз, когда приложение открывается в андроида
final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.getState() == NetworkInfo.State.CONNECTED) {
//notify user you are online
} else {
//notify user you are not online
}
У меня есть это в моей основной деятельности и она отлично работает, но то, что я теперь нужно проверить подключение к Интернету каждый раз, когда приложение запускается, иногда приложение остается в каком-то состоянии, а затем отключается Интернет, поэтому, когда он снова открывается, он не проходит через основное действие, поэтому ничего не проверяется ,
Как было предложено в this question Я следил за this tutorial по мониторингу активности в Интернете с помощью BroadcastReceiver, и я пытаюсь отобразить и AlertDialog, когда noConnectivity - это правда, но ничего не происходит.
Это мой код, используя учебник, упомянутых выше:
public class MyActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
registerReceivers() ;
(..my activity code goes here...)
}
private void noInternet()
{
Intent myIntent = new Intent(this, NoInternetActivity.class);
startActivity(myIntent);
}
/*
* method to be invoked to register the receiver
*/
private void registerReceivers() {
registerReceiver(mConnReceiver,
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
private void alert()
{
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("internet connection");
alertDialog.setMessage("To use this app you need intenet connection");
alertDialog.setButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// here you can add functions
}
});
alertDialog.show();
}
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
// do application-specific task(s) based on the current network state, such
// as enabling queuing of HTTP requests when currentNetworkInfo is connected etc.
if(noConnectivity)
{
alert();
noInternet();
}
}
};
}
но ни alert()
или noInternet()
увольняют вверх.
Надеюсь, вы можете мне помочь.
но я должен сделать это в любой деятельности, у меня есть? – marimaf
Если вам нужно иметь возможность подключения во всех действиях, я могу это сделать. Будет ли это сложно или проблематично? – Tim
Я бы сказал, что 95% моих классов активности требуют подключения, поскольку они получают динамический контент с сервера. Я не чувствую, что добавить это к каждому действию - лучшее решение, но я мог бы сделать это, если не найду лучшего. благодаря – marimaf