2013-12-02 4 views
1

Привет программистам!Проверка подключения к Интернету в WebView

Я имеющ проблему с моим WebView-App ...

Я хочу, чтобы добавить «Connection-проверить» при запуске, который выскакивать ошибка при отсутствии интернет-соединения не является Ивеко или WebView является время вышло. Я не могу сделать это сам, потому что я новичок в Android-программировании.

Я также хочу добавить меню параметров, где я могу перезагрузить фактическую страницу.

Надежда кто-то может мне помочь ...

Фактический код:

package net.schwarzis.htl_cloud; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 




@SuppressLint("JavascriptInterface") public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 

    private WebView browser = null; 



     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      browser.loadUrl(url); 
      return true; 
     } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     // connect to our browser so we can manipulate it 
     browser = (WebView) findViewById(R.id.mybrowser); 

     // get settings so we can config our WebView instance 
     WebSettings settings = browser.getSettings(); 

     // JavaScript? Of course! 
     settings.setJavaScriptEnabled(true); 
     // clear cache 
     browser.clearCache(true); 

     final ProgressDialog pd=new ProgressDialog(this); 
     pd.setMessage("Lade..."); 
     browser.setWebViewClient(new WebViewClient() { 
      public void onPageFinished(WebView view, String url) { 
       pd.dismiss(); 
      } 
     @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     pd.show(); 
     browser.loadUrl(url); 
     return true; 
    } 
     }); 
       // this is necessary for "alert()" to work 
       browser.setWebChromeClient(new WebChromeClient()); 

       // add our custom functionality to the javascript environment 
       browser.addJavascriptInterface(new MyCoolJSHandler(), "Cloud"); 

       // load a page to get things started 
    pd.show(); 
       browser.loadUrl("http://cloud.schwarzis.net"); 



     } 


     @Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
      final ProgressDialog pd=new ProgressDialog(this); 
      pd.setMessage("Lade..."); 
      if(event.getAction() == KeyEvent.ACTION_DOWN){ 
       switch(keyCode) 
       { 
       case KeyEvent.KEYCODE_BACK: 
        if(browser.canGoBack() == true){ 
         pd.show(); 
         browser.goBack(); 
        }else{ 
          pd.show(); 
         finish(); 
        } 
        pd.dismiss(); 
        return true; 
       } 

      } 
      return super.onKeyDown(keyCode, event); 
     } 



    final class MyCoolJSHandler 
    { 
     // write to LogCat (Info) 
     public void Info(String str) { 
      Log.i("GoingNative",str); 
     } 

     // write to LogCat (Error) 
     public void Error(String str) { 
      Log.e("GoingNative",str); 
     } 

     // Kill the app 
     public void EndApp() { 
      finish(); 
     } 
    } 

} 

ответ

1

Доступен способ подключения к Интернету ниже.

public boolean isNetworkAvailable() { 
    // Get Connectivity Manager class object from Systems Service 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    // Get Network Info from connectivity Manager 
    NetworkInfo networkInfo = cm.getActiveNetworkInfo(); 

    // if no network is available networkInfo will be null 
    // otherwise check if we are connected 
    if (networkInfo != null && networkInfo.isConnected()) { 
     return true; 
    } 
    return false; 
} 

Вы должны указать ниже разрешений в AndroidMenifest.xml файл

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

Первый в манифесте вы должны иметь эти

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

о ур OnCreate

AlertDialog.Builder alertDialogBuilder = null; 

положите это in onCreate

  alertDialogBuilder = new AlertDialog.Builder(
       this.context); 

      // set title 
      alertDialogBuilder.setTitle("No connection"); 

      // set dialog message 
      alertDialogBuilder 
       .setMessage("No connection, Retry") 
       .setCancelable(true); 

       // create alert dialog 
       AlertDialog alertDialog = alertDialogBuilder.create(); 

затем используйте этот метод.

private boolean isNetworkConnected() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    if (ni == null) { 
    // There are no active networks. 
      alertDialog.show(); 
    return false; 
    } else 
    browser.getSettings().setJavaScriptEnabled(true); 
    browser.loadUrl("javascript:window.location.reload(true)"); 
    return true; 
} 

и освежить ваш WebView использовать

browser.getSettings().setJavaScriptEnabled(true); 
browser.loadUrl("javascript:window.location.reload(true)"); 

Вот отличный учебник для кодов, This.

+0

Спасибо за вашу помощь, но не могли бы вы опубликовать образец-код это в моем коде? Я не знаю, как вызвать функцию для проверки конвекции и «всплывающего окна», которое должно появиться, когда соединение не доступно ... – TerraBAS

+0

Хорошо, подождите пожалуйста –

+0

обновленный ответ, проверьте его –

0

Чтобы проверить, если соединение доступно, вы можете использовать:

private boolean isNetAvailable() { 
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager 
       .getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 

Что касается обновления в меню, добавьте обновления <item> в res -> menu -> yourMenu.xml, дайте ему идентификатор и добавить onItemSelected() (переопределить его) метод к вашей деятельности.

+0

Спасибо за вашу помощь , но можете ли вы разместить образец кода в моем коде? Я не знаю, как вызвать функцию для проверки конвекции и всплывающего окна, которое должно появиться, когда соединение не доступно ... – TerraBAS

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