2013-03-31 2 views
3

Я знаю, что этот вопрос, возможно, был задан раньше, но я не могу понять, как использовать эти ответы, чтобы заставить их работать с моим приложением.Принудительное закрытие приложения, когда нет доступного интернет-соединения

Я хочу проверить, есть ли подключение к Интернету, когда пользователь приложения открывает приложение. Я нашел некоторые методы, чтобы проверить это, но я совершенно новый для разработки 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; 
    } 
} 
} 

Если нет связи, я хотел бы, чтобы заставить приложение закрыть, и показать предупреждение. Отрывки кода я нашел, что можно проверить:

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; 
    } 

    } 

Я просто не знаю, какие части этого кода мне нужно изменить, чтобы заставить его работать с моим приложением. Любая помощь будет оценена!

файл манифеста

<?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> 
+0

Вы добавили разрешение Интернет в AndroidManifest.xml –

+0

Да, я уже сделал. – Yannick

+0

Вы объявили активность в AndroidManifest.xml –

ответ

4

Я думаю, что вы не декларировать деятельность в 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> 

Если это мероприятие не является пусковой установкой.

<activity 
    android:name=".AndroidMobileAppSampleActivity" 
    android:label="@string/title_activity" > 
</activity> 

Вместо этого проверьте подключение к Интернету, выполните следующие действия.

/** 
* 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; 
} 

и добавить разрешения в AndroidManifest.xml

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

и проверить это, используя следующий код:

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. 
} 
+0

Спасибо! Я просто не могу понять, где разместить «public static boolean» часть. – Yannick

+0

введите его в свой класс активности. –

+0

Большое спасибо.Последнее: что мне нужно изменить? Public static boolean isNetworkAvailable (контекст контекста) {'to? – Yannick

1

проверить, как этот

if(hasActiveInternetConnection()){ 
     mainWebView.loadUrl("http://www.google.com/"); 
    }else{ 
     Log.d("TAG","No Internet connection"); 
    } 

Надеется, что это помогает вам.

1

Существует еще один простой способ сделать это

public class MyActivity extends Activity { 

    // flag for Internet connection status 
    Boolean isInternetPresent = false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

       // get Internet status 
       isInternetPresent = isConnectingToInternet; 

       if (!isInternetPresent) { 
        showAlertDialog(MyActivity.this, "No Internet Connection", 
          "You don't have internet connection.", false); 
       } 

    } 


/** 
    * check the Internet connection and return true or false 
    * 
    * @return 
    */ 
    public boolean isConnectingToInternet() { 
     ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext() 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) 
      for (int i = 0; i < info.length; i++) 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
        return true; 
       } 

     } 
     return false; 

    } 



    public void showAlertDialog(Context context, String title, String message, Boolean status) { 
     AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 

     // Setting Dialog Title 
     alertDialog.setTitle(title); 

     // Setting Dialog Message 
     alertDialog.setMessage(message); 

     // Setting alert dialog icon 
     alertDialog.setIcon(R.drawable.fail); 

     // Setting OK Button 
     alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      finished(); 
      } 
     }); 

     // Showing Alert Message 
     alertDialog.show(); 
    } 
} 
Смежные вопросы