2011-08-21 4 views
2

브로드 캐스트 리시버를 사용하여 인터넷에 연결되어 있지 않은지 확인하려면 어떻게합니까? 브로드 캐스트 수신기 및 인터넷 연결

그리고 그 후

:

연결이 설치 1. = 아무것도하지 않는다

2.There 연결 =

난 당신이 나에 대해 부탁 해요 이해를 바랍니다 열려 새로운 활동하지 않습니다 . 당신의 도움에 대한

WebView mWebView; 
    String URL = "http://url.com"; 
    ProgressBar loadingProgressBar,loadingTitle; 


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


     mWebView = (WebView) findViewById(R.id.Web); 
     mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setBuiltInZoomControls(true); 
     mWebView.getSettings().setAllowFileAccess(true); 
     mWebView.loadUrl(URL); 
     mWebView.setWebViewClient(new MyWebViewClient()); 

     loadingProgressBar=(ProgressBar)findViewById(R.id.progressBar); 

     mWebView.setWebChromeClient(new WebChromeClient() { 

     @Override 
     public void onProgressChanged(WebView view, int newProgress) { 
     super.onProgressChanged(view, newProgress); 
     loadingProgressBar.setProgress(newProgress); 
     if (newProgress == 100) { 
     loadingProgressBar.setVisibility(View.GONE); 
     } else{ 
     loadingProgressBar.setVisibility(View.VISIBLE); 
     } 
     } 
     }); 
    } 



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


     private class MyWebViewClient extends WebViewClient { 


     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.endsWith(".mp3")) { 
       Intent intent = new Intent(Intent.ACTION_VIEW); 
       intent.setDataAndType(Uri.parse(url), "audio/*"); 
       view.getContext().startActivity(intent); 
       return true; 
      } else if (url.endsWith(".mp4") || url.endsWith(".3gp")) { 
        Intent intent = new Intent(Intent.ACTION_VIEW); 
        intent.setDataAndType(Uri.parse(url), "video/*"); 
        view.getContext().startActivity(intent); 
        return true; 
      } else { 
       return super.shouldOverrideUrlLoading(view, url); 
      } 
     } 
     } 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menu_paivita: 
    mWebView.reload(); 
    return true; 
    case R.id.menu_sulje: 
    a.this.finish(); 
    return true; 
    case R.id.menu_tietoa: 
      Intent intent = new Intent(a.this, c.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     return true; 
    case R.id.menu_palautetta: 
     Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
     String aEmailList[] = { "[email protected]" }; 
     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList); 
     emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Palaute Sovelluksesta"); 
     emailIntent.setType("plain/text"); 
     startActivity(Intent.createChooser(emailIntent, "Send your email in: Gmail")); 
     return true; 
    default: 
     return false; 
} 
} 
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
     String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
        boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 

     NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
     NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO); 

     // do application-specific task(s) based on the current network state, such 
     // as enabling queuing of HTTP requests when currentNetworkInfo is connected etc. 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo info = cm.getActiveNetworkInfo(); 
     if (info != null) { 
      if (!info.isConnected()) { 
      } 
     } 
     else { 
      setContentView(R.layout.connection_error); 
     } 
    } 
}; 

감사 :

여기 내 웹보기 응용 프로그램 코드입니다!

업데이트 : 코드가 업데이트되었습니다.

답변

5

ConnectivityManager은 인터넷 연결을 확인할 수있는 전화를 제공합니다.

당신은 ... ConnectivityManager.CONNECTIVITY_ACTION

+0

저는 안드로이드가 처음이에요. 어떻게 그렇게합니까? =) – Eljas

+3

여기 좋은 자습서가 있습니다 : http://thiranjith.wordpress.com/2011/03/31/how-to-monitor-network-connectivity-in-android/ – Dave

+0

내 질문 코드를 업데이트합니다. 이 일이 내가 잘못한 것을 그렇게 얻지는 않습니까? – Eljas

2

같은 프로젝트에 파일을 생성 반응하는 리스너를 생성, 연결의 변화를 감상하려는이 파일

package your.package.name; //Change it as your package name 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.widget.Toast; 

public class NetworkChangeReceiver extends BroadcastReceiver { 

    public static int TYPE_WIFI = 1; 
    public static int TYPE_MOBILE = 2; 
    public static int TYPE_NOT_CONNECTED = 0; 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     String status = getConnectivityStatusString(context); 

     Toast.makeText(context, status, Toast.LENGTH_LONG).show(); 
    } 

    public static int getConnectivityStatus(Context context) { 
     ConnectivityManager cm = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
     if (null != activeNetwork) { 
      if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
       return TYPE_WIFI; 

      if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
       return TYPE_MOBILE; 
     } 
     return TYPE_NOT_CONNECTED; 
    } 

    public static String getConnectivityStatusString(Context context) { 
     int conn = getConnectivityStatus(context); 
     String status = null; 
     if (conn == TYPE_WIFI) { 
     status = "Wifi enabled"; 
     } else if (conn == TYPE_MOBILE) { 
      status = "Mobile data enabled"; 
     } else if (conn == TYPE_NOT_CONNECTED) { 
      status = "Not connected to Internet"; 
     } 
     return status; 
    } 
} 
에 다음 코드를 붙여 복사하는 경우

그리고는 토스트 메시지 네트워크 상태 변경의 경우를 볼 수 있습니다 응용 프로그램을 실행 한 후 응용 프로그램 태그

<application ...> 
... 
    <receiver 
     android:name="your.package.name.NetworkChangeReceiver" //Change it as your-package-name.NetworkChangeReceiver 
     android:label="NetworkChangeReceiver" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
     </intent-filter> 
    </receiver> 
    ... 
</application> 

에서 파일을 매니페스트에 다음을 추가합니다.

관련 문제