2014-04-17 3 views
0

내 Android 애플리케이션은 주로 모바일 웹 사이트를 탐색하는 Webview (라벨 WebViewActivity)입니다. 무선 연결이없는 경우 모든 URL로드에서 다른 활동을 여는 연결 감지기가 있습니다. 이 다음 활동에서 무선 설정을 여는 단추가 있습니다. 뒤로 버튼을 누르면 MainActivity라는 레이블이 붙은 두 번째 활동이 자동으로 새로 고쳐지고 Webview가로드 한 페이지로 돌아가고 싶습니다. MainActivity.java를 변경하려면 무엇을 변경해야합니까?Android 무선 연결 확인시 설정으로 돌아 가기

내 MainActivity는 :

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 


    public class MainActivity extends Activity { 

// flag for Internet connection status 
Boolean isInternetPresent = false; 
// Connection detector class 
ConnectionDetector cd; 

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

} 

@Override 
protected void onRestart(){ 
    if(checkConnection()){ 
     Intent intent= new Intent(this, WebViewActivity.class); 
     startActivity(intent); 
    } 
} 

@Override 
// Detect when the back button is pressed 
public void onBackPressed() { 

    super.onBackPressed(); 
} 




public void openSettings(View view){ 
    Intent intent= new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); 
    startActivity(intent); 
} 

public boolean checkConnection(){ 
    // creating connection detector class instance 
    cd = new ConnectionDetector(getApplicationContext());  
    //Get Internet Status 
    isInternetPresent = cd.isConnectingToInternet(); 

    if(!isInternetPresent) 
     return false; 

    return true; 
} 

} 

은 내 WebviewActivity는 :

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.DialogInterface.OnClickListener; 
import android.net.Uri; 
import android.os.Bundle; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebViewActivity extends Activity { 

    private WebView mWebView; 
    // flag for Internet connection status 
    Boolean isInternetPresent = false; 
    // Connection detector class 
    ConnectionDetector cd; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // TODO Auto-generated method stub 

     if (checkConnection()) { 
     mWebView = (WebView) findViewById(R.id.activity_main_webview); 
     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true);   
     webSettings.setDomStorageEnabled(true); 
     mWebView.loadUrl("http://my.fellowshipnwa.org/?publicapp"); 

     // Force links and redirects to open in the WebView instead of in a browser 
     mWebView.setWebViewClient(new myWebClient()); 
     } else { 
      openSplash(); 
     } 

    } 

    @Override 
    // Detect when the back button is pressed 
    public void onBackPressed() { 
     if(mWebView.canGoBack()) { 
      mWebView.goBack(); 
     } else { 
      // Let the system handle the back button 
      new AlertDialog.Builder(this) 
      .setTitle("Exit myFellowship App?") 
      .setMessage("Are you sure you want to exit?") 
      .setNegativeButton(android.R.string.no, null) 
      .setPositiveButton(android.R.string.yes, new OnClickListener() { 

       public void onClick(DialogInterface arg0, int arg1) { 
        WebViewActivity.super.onBackPressed(); 
       } 
      }).create().show(); 
     } 
    } 

    public class myWebClient extends WebViewClient { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      if(!checkConnection()){ 
       openSplash(); 
       return true; 
      }else{ 
      if(url.startsWith("tel:")){ 
       Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } 
      else if(url.startsWith("mailto:")){ 
       Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } 
      } 
      return false; 

      } 


     } 

    public void openSplash(){ 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
    } 

    public boolean checkConnection(){ 
     // creating connection detector class instance 
     cd = new ConnectionDetector(getApplicationContext());  
     //Get Internet Status 
     isInternetPresent = cd.isConnectingToInternet(); 

     if(!isInternetPresent) 
      return false; 

     return true; 
    } 

} 

은 어떤 도움이 크게 감사합니다! 비록 내가이 질문을 만들 때까지 놀랐다는 것을 의미한다고해도.

친구.

답변

0

나는 잠시 동안 연주하고 다른 몇 가지 예를 사용하여 작동하는 것을 함께 조각 냈습니다. 하나의 작은 장애는 사용자가 연결을 켰지 만 앱에 돌아 왔을 때 연결되지 않았기 때문에 ConnectorActivity에 남아있게됩니다. 따라서 연결을 확인하기 위해 뒤로 버튼을 가로 챕니다. 현재 활동이 있으면 현재 활동이 완료됩니다. 그런 다음 webview로 돌아 가면 다시로드됩니다.

ConnectorActivity.java :

@Override 
protected void onRestart(){ 
    super.onRestart(); 
    mWebView.reload(); 

} 
: WebViewActivity.java에서

@Override 
    protected void onRestart(){ 
     super.onRestart(); 
     if(checkConnection()){ 
      finish(); 
     } 
    } 

    @Override 
    // Detect when the back button is pressed 
    public void onBackPressed() { 
     if(checkConnection()){ 
      super.onBackPressed(); 
     } 

    } 

조각

관련 문제