没有互联网连接时强制关闭应用程序

Yan*_*ick 4 android

我知道以前可能会问过这个问题,但我不知道如何使用这些答案使它们与我的应用程序一起使用。

我想检查应用程序的用户打开应用程序时是否存在互联网连接。我已经找到了一些方法来检查它,但是我对android开发是全新的,我只是不知道该怎么做。这是我当前的应用程序文件:

package com.pocket.line;

import com.pocket.line.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class AndroidMobileAppSampleActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WebView mainWebView = (WebView) findViewById(R.id.mainWebView);

    WebSettings webSettings = mainWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    mainWebView.setWebViewClient(new MyCustomWebViewClient());
    mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

    mainWebView.loadUrl("http://www.google.com/");
}

private class MyCustomWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
}
Run Code Online (Sandbox Code Playgroud)

如果没有连接,我想强制关闭该应用程序并显示警报。我发现可以检查此代码段:

    public boolean hasActiveInternetConnection()
     {
    try
    {
        HttpURLConnection urlc = (HttpURLConnection) 
        (new URL("http://www.google.com").openConnection());
        urlc.setRequestProperty("User-Agent", "Test");
        urlc.setRequestProperty("Connection", "close");
        urlc.setConnectTimeout(4000);
        urlc.setReadTimeout(4000);
        urlc.connect();
        networkcode2 = urlc.getResponseCode();
        return (urlc.getResponseCode() == 200);
    } catch (IOException e)
    {
        Log.i("warning", "Error checking internet connection", e);
        return false;
    }

    } 
Run Code Online (Sandbox Code Playgroud)

我只是不知道我需要更改代码的哪些部分才能使其与我的应用程序兼容。任何帮助,将不胜感激!

清单文件

 <?xml version="1.0" encoding="utf-8"?>
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.pocket.line" android:versionCode="3"
  android:versionName="1.2">
 <uses-sdk android:minSdkVersion="11" />

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

 <application android:icon="@drawable/ic_launcher" android:label="Pocket Line">
    <activity android:name="com.pocket.line.AndroidMobileAppSampleActivity"
              android:label="Pocket Line">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

Aja*_*y S 5

我认为您尚未在AndroidManifest.xml中声明活动

如果此活动是应用程序的启动器,请执行此操作。

<activity
   android:name=".AndroidMobileAppSampleActivity"
   android:label="@string/title_activity" >
     <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

如果此活动不是启动程序。

<activity
   android:name=".AndroidMobileAppSampleActivity"
   android:label="@string/title_activity" >
</activity>
Run Code Online (Sandbox Code Playgroud)

而不是检查互联网连接,而是这样。

/**
 * This method check mobile is connected to network.
 * @param context
 * @return true if connected otherwise false.
 */
public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager conMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if(conMan.getActiveNetworkInfo() != null && conMan.getActiveNetworkInfo().isConnected())
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

和在AndroidManifest.xml中添加权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Run Code Online (Sandbox Code Playgroud)

并使用以下代码进行检查:

if(!isNetworkAvailable(this)) {
   Toast.makeText(this,"No Internet connection",Toast.LENGTH_LONG).show();
   finish(); //Calling this method to close this activity when internet is not available.
}
Run Code Online (Sandbox Code Playgroud)