Android 检查互联网连接

Android 检查互联网连接,android,eclipse,Android,Eclipse,我想我应该首先说我对eclipse和java完全陌生。我正在尝试使用eclipse创建一个android应用程序来启动我的网页。我有一个代码示例,它运行得很好,但它几乎是从我在网上找到的示例中复制和粘贴的,所以请原谅我的代码太草率。我想知道如何检查互联网或wifi连接是否可用。。如果没有连接,则显示警报(没有Internet连接)。。我发现了一些类似的问题,但我只是不知道该把代码放在哪里?谁能给我看看吗 package com.mysite.news; import com.m

我想我应该首先说我对eclipse和java完全陌生。我正在尝试使用eclipse创建一个android应用程序来启动我的网页。我有一个代码示例,它运行得很好,但它几乎是从我在网上找到的示例中复制和粘贴的,所以请原谅我的代码太草率。我想知道如何检查互联网或wifi连接是否可用。。如果没有连接,则显示警报(没有Internet连接)。。我发现了一些类似的问题,但我只是不知道该把代码放在哪里?谁能给我看看吗

    package com.mysite.news;

    import com.mysite.news.R;
    import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;

import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;




public class WebActivity extends Activity {

    private WebView wv;

    private String LASTURL = "";

    Menu myMenu = null;

    private static final String PREFS_NAME = "MyPrefs";



    private Boolean imgOn;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        this.getWindow().requestFeature( Window.FEATURE_PROGRESS );
        setContentView( R.layout.web_view );

        wv = ( WebView ) findViewById( R.id.web_view );

        WebSettings webSettings = wv.getSettings();
        webSettings.setSavePassword( true );
        webSettings.setSaveFormData( true );
        webSettings.setJavaScriptEnabled( true );
        webSettings.setUseWideViewPort(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setSupportZoom(false);


        SharedPreferences settings = getSharedPreferences( PREFS_NAME, 0 );
        imgOn = settings.getBoolean( "IMGMODE", false );
        webSettings.setLoadsImagesAutomatically( imgOn );

        final Activity activity = this;


        // start ProgressDialog with "Page loading..."
        final ProgressDialog dialog = new ProgressDialog( activity );
        dialog.setMessage( "Page loading..." );
        dialog.setIndeterminate( true );
        dialog.setCancelable( true );
        dialog.show();

        wv.setWebChromeClient( new WebChromeClient() {
            public void onProgressChanged( WebView view, int progress ) {
                // set address bar and progress
//              activity.setTitle( " " + LASTURL );
//              activity.setProgress( progress * 100 );

                if( progress == 100 ) {
                    // stop ProgressDialog after loading
                    dialog.dismiss();

//                  activity.setTitle( " " + LASTURL );
                }
            }
        } );

        wv.setWebViewClient( new WebViewClient() {
            public void onReceivedError( WebView view, int errorCode, String description, String failingUrl ) {
                Toast.makeText( getApplicationContext(), "Error: " + description + " " + failingUrl, Toast.LENGTH_LONG ).show();
            }

            @Override
            public boolean shouldOverrideUrlLoading( WebView view, String url ) {
                if( url.indexOf( "mysite" ) <= 0 ) {
                    // the link is not for a page on my site, so launch another Activity that handles URLs
                    Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( url ) );
                    startActivity( intent );
                    return true;
                }
                return false;
            }

            public void onPageStarted( WebView view, String url, Bitmap favicon ) {
                LASTURL = url;
                view.getSettings().setLoadsImagesAutomatically( true );
                view.getSettings().setBuiltInZoomControls( true );
            }

            public void onPageFinished( WebView view, String url ) {
                view.loadUrl( "javascript:(function() { " +
                                      "hide('sidebar');" +
                                      //"var parent = document.getElementsByClassName('page-navigation')[0];"+
                                      //"var panel = document.getElementsByClassName('panel-tools')[0];"+
                                      //"var div = document.createElement('div');"+
                                      //"div.innerHTML = panel.innerHTML;"+
                                      //"parent.appendChild(div);"+
                                      //"panel.innerHTML = '';"+
                                      //"div.style['margin-left'] = '31px';"+
                                      "var panel = document.getElementById('search');" +
                                      "panel.style['width'] = '55px';" +

                                      //"var imgs=document.getElementsByTagName('IMG');for(var i=0;i<imgs.length;i++){if (imgs[i].height=60) {imgs[i].src='';imgs[i].width=0;} }"+
                                      //"var urls=document.getElementsByTagName('li');for(var i=0;i<urls.length;i++){if (urls[i].style='margin: -14px 0pt 0pt;'){urls[i].style['display'] = 'none';}}"+
                                      //"hideByClass('panel-tools');"+
                                      "function hide(id){if (document.getElementById(id)){document.getElementById(id).style['display'] = 'none';}}" +
                                      //"function hideByClass(c){var e=document.getElementsByClassName(c);for(var i=0;i<e.length;i++){e[i].style['display'] = 'none';}}"+
                                      "})()" );
                if( imgOn ) {
                    view.getSettings().setLoadsImagesAutomatically( true );
                    view.getSettings().setSupportZoom(false);

                }
            }
        } );
        wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        wv.setScrollbarFadingEnabled(false);
        wv.loadUrl( "http://www.mysite.com" );
    }

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

    @Override
    public boolean onCreateOptionsMenu( Menu menu ) {
        super.onCreateOptionsMenu( menu );

        this.myMenu = menu;
        MenuItem item = menu.add( 0, 1, 0, "MAIN PAGE" );
        item.setIcon( R.drawable.home );
        MenuItem item2 = menu.add( 0, 2, 0, "BACK" );
        item2.setIcon( R.drawable.arrowleft );
        MenuItem item3 = menu.add( 0, 3, 0, "Reload" );
        item3.setIcon( R.drawable.s );
        MenuItem item4 = menu.add( 0, 4, 0, "CLEAR CACHE" );
        item4.setIcon( R.drawable.trash );
        MenuItem item5 = menu.add( 0, 5, 0, "Rate" );
        item5.setIcon( R.drawable.vote );
        MenuItem item6 = menu.add( 0, 6, 0, "Exit" );
        item6.setIcon( R.drawable.close );
        return true;
    }

    @Override
    public boolean onOptionsItemSelected( MenuItem item ) {
        switch( item.getItemId() ) {
            case 1:
                wv.loadUrl( "http://mysite.com" );
                break;
            case 2:
                if( wv.canGoBack() ) {
                    wv.goBack();
                }
                break;
            case 3:
                wv.loadUrl( LASTURL );
                break;
            case 4:
                wv.clearCache( true );
                break;
            case 5:
                Intent marketIntent2 = new Intent(Intent.ACTION_VIEW, Uri.parse(
                      "https://play.google.com/store/apps/details?id=" + getPackageName()));
                    startActivity(marketIntent2);
                break;
            case 6:
                finish();
                break;

        }

        return true;
    }

    private void saveSettings( Boolean val ) {
        SharedPreferences settings = getSharedPreferences( PREFS_NAME, 0 );
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean( "IMGMODE", val );
        editor.commit();
    }
}
package com.mysite.news;
导入com.mysite.news.R;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.graphics.Bitmap;
导入android.net.Uri;
导入android.os.Bundle;
导入android.view.KeyEvent;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.Window;
导入android.webkit.WebChromeClient;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入android.widget.Toast;
公共类WebActivity扩展了活动{
私有网络视图;
私有字符串LASTURL=“”;
菜单myMenu=null;
私有静态最终字符串PREFS_NAME=“MyPrefs”;
私有布尔imgOn;
/**
*在首次创建活动时调用。
*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE\u PROGRESS);
setContentView(R.layout.web_视图);
wv=(网络视图)findViewById(R.id.web\u视图);
WebSettings WebSettings=wv.getSettings();
webSettings.setSavePassword(true);
webSettings.setSaveFormData(真);
setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.SetLoadWithOverview模式(true);
webSettings.setSupportZoom(假);
SharedReferences设置=GetSharedReferences(首选项名称,0);
imgOn=settings.getBoolean(“IMGMODE”,false);
webSettings.setLoadsImagesAutomatically(imgOn);
最终活动=此;
//用“页面加载…”启动ProgressDialog
最终进度对话框=新建进度对话框(活动);
setMessage(“页面加载…”);
对话框。setUndeterminate(true);
对话框。可设置可取消(true);
dialog.show();
wv.setWebChromeClient(新WebChromeClient(){
public void onProgressChanged(WebView视图,int-progress){
//设置地址栏和进度
//activity.setTitle(“+LASTURL”);
//活动。设置进度(进度*100);
如果(进度==100){
//加载后停止ProgressDialog
dialog.dismise();
//activity.setTitle(“+LASTURL”);
}
}
} );
wv.setWebViewClient(新的WebViewClient(){
public void onReceivedError(WebView视图、int错误代码、字符串描述、字符串失败URL){
Toast.makeText(getApplicationContext(),“Error:+description+”“+failingUrl,Toast.LENGTH_LONG).show();
}
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
如果(url.indexOf(“mysite”)检查此链接


加载url之前请使用相同的解决方案。如果internet不可用,请显示错误对话框,否则请加载url

以下是我用于网络连接的帮助器类:

public class NetworkUtils
{

    public static boolean isOnline( Service service )
    {
        ConnectivityManager cm = (ConnectivityManager) service.getSystemService( Context.CONNECTIVITY_SERVICE );

        NetworkInfo netInfo = cm.getActiveNetworkInfo();

        if ( netInfo != null && netInfo.isConnected() )
        {
            return true;
        }

        return false;
    }

}
不要忘记将权限添加到AndroidManifest.xml:

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

这个片段帮助了我,希望它也能帮助你。你的用法可能是这样的

if (!checkNetwork()) {
    //TODO Network Not Available
} else {
    //TODO Network Available    
}

您可能希望在
函数()中放置
Toast通知
而不是
那么第二部分(您要放置的代码)在哪里呢。您是否只想在“活动启动”中测试它。可能只是在另一个“活动”中使用它,如果您有internet连接,请启动此“活动”或以其他方式显示其他内容。这是一个很好的关注点分离。在执行wv.loadurl()之前,您必须检查是否有internet连接;如果有Internet连接->继续,如果没有->显示消息我想我只是想在活动启动时测试一下..我在这里发现了一些可能有用的东西,但是,就像我说的,我真的不知道放在哪里…@BlundellI想的是这样的…
private boolean checkInternetConnection(){ConnectivityManager conMgr=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);//如果(conMgr.getActiveNetworkInfo()!=null&&conMgr.getActiveNetworkInfo().isAvailable()&&conMgr.getActiveNetworkInfo().isConnected()){return true;}否则{Log.v(标记,“Internet连接不存在”);return false;}}
我可以把它放在上面的代码中吗?如果可以,放在哪里?使用我发布的helper类。然后,无论何时需要检查是否有连接,只要根据需要调用
if(!NetworkUtils.isOnline(service)){return;}
。也就是说,在调用
wv.loadurl()之前检查网络是否可用
显然,参数
service
需要来自调用类。我创建了一个新类调用NetworkUtils,并在
wv.loadurl()之前添加了
if(!NetworkUtils.isOnline(service)){return;}
我在这两个文件上都有错误。任何建议都不确定没有错误。但我敢打赌,这是因为您刚刚复制了代码,包括
服务的示例参数
。您需要使用实现类中的
服务作为参数。
if (!checkNetwork()) {
    //TODO Network Not Available
} else {
    //TODO Network Available    
}