2013-12-15 64 views
-1

我有這個代碼和工作,但我不能把代碼來檢查互聯網 我不會檢查互聯網,如果可用的應用程序轉到我的網址,如果不顯示我的消息 「notinternet可用」。代碼工作vey好,但我不能forwod AFTR connction去我URL如何在android中檢查互聯網連接?

code1 
    HelooWebViewActivity.java 

    package xonmp.hellowebview; 

    import android.os.Bundle; 
    import android.annotation.SuppressLint; 
    import android.app.Activity; 
    import android.view.KeyEvent; 
    import android.view.Menu; 
    import android.webkit.WebView; 
    import android.webkit.WebViewClient; 

    @SuppressLint("SetJavaScriptEnabled") public class HelloWebViewActivity 
    extends Activity { 


    private WebView mWebView; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_hello_web_view); 



    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.google.com"); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 

    } 

    private class HelloWebViewClient extends WebViewClient { 

    // @Override 
    public boolean shoudOverridUrlLoading(WebView webview, String url) 
    { 
     webview.loadUrl(url); 
     return true; 

    } 

    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) 
    { 
    mWebView.goBack(); 
    return true; 
     } 
     return super.onKeyDown(keyCode, event); 

    } 
    } 



    code 2 
    AndroidManifest.xml 

    <?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="xonmp.hellowebview" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="8" /> 

    <application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="xonmp.hellowebview.HelloWebViewActivity" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    </application> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

    </manifest> 


    <?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="xonmp.hellowebview" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="8" /> 

    <application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="xonmp.hellowebview.HelloWebViewActivity" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    </application> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

    </manifest> 




    code 3 

    Activity_heloo_web_view.xml 

    <WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".HelloWebViewActivity" 
    /> 

回答

0

這樣的事情應該對其進行排序

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

你還需要這在你的清單

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

此代碼可以幫助你:

public boolean isConnectionAvailable(Context context) { 
    final ConnectivityManager connMgr = (ConnectivityManager) context 
     .getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    NetworkInfo mobileNetWork = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    return wifi.isConnected() || mobileNetWork.isConnected(); 
    } 

使用這樣的事情:

if(isConnectionAvailable(getApplicationContext()) { 
    mWebView.loadUrl("http://www.google.com"); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 
} else { 
//Toast message 
Toast.makeText(getApplicationContext(), " No internet avalaible", Toast.LENGTH_SHORT).show(); 
} 

而且裏面menifest把下面的許可應用程序標記外

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

感謝,請把編輯完整的代碼在我的代碼對於理解.. – user3104445

+0

如果我不會添加按鈕(重發)當無刷新頁面互聯網? – user3104445

0

首先,你需要在清單中聲明你需要訪問網絡狀態,你可以這樣做:

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

然後,您需要一個ConnectivityManager實例來獲取網絡狀態。在開發者文檔中說它用於獲取網絡狀態(無線,移動)。

以這種方式得到它的一個實例:

ConnectivityManager manager 
     = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

然後讓你可以使用這個無線狀態:

NetworkInfo wifiStatus = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

,併爲移動網絡

NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

要獲得網絡的狀態,您可以使用方法

isConnected(); 

而且在方法中使用它們放在一起:讓我們說CheckConnectionAvailable

public boolean CheckConnectionAvailable(){ 

    ConnectivityManager manager = (ConnectivityManager) context 
    .getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
NetworkInfo mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
return wifi.isConnected() || mobile.isConnected(); 
} 

編輯

如果你想用一個按鈕刷新頁面,你必須做的2種方式它。

但是,虐待告訴你如何在XML中做到這一點,因爲這樣你可以讓代碼更加清潔並且與佈局分離。比方說,你在xml中聲明瞭這個按鈕。

<Button id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Refresh Page" android:onClick="onClick"/> 

而在你的代碼中,你將需要你在中傳遞的方法。

public void onClick(View view){ 
    switch(view.getId()){ 
    case R.id.button: 
    boolean isAvailable = CheckConnectionAvailable(); 
    if(isAvailable){ 
     Toast.makeText(this,"message you wanna show if theres a connection available", Toast.LENGTH_SHORT).show();  
     }else { 
    Toast.makeText(this,"message you wanna show if theres not a connection available", 
    Toast.LENGTH_SHORT).show(); 
    } 
    break; 
    } 
} 
+0

如果我不會添加按鈕(重試)時沒有互聯網可用刷新頁面? – user3104445

+0

檢查我編輯的答案@ user3104445 :-) –