Android App在浏览器中打开网址而不是通过应用程序中的webview

时间:2014-04-24 16:25:09

标签: java android webview

我需要在webview中打开url而不是浏览器但它总是在浏览器中打开它有什么原因吗?我已经在WebView中添加了代码,我认为这样做了。它一直工作正常,现在它出于某种原因在浏览器中打开

WebView代码:

public class MapActivity extends MenuActivity {

private final static String TAG = "HearingTest";
private WebView webView;
private String urlString;
private ProgressDialog progressDialog;
private Context context = MapActivity.this;
private boolean isPageLoadedComplete = false;
private Timer myTimer;

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

    ActivityHelper activityHelper = new ActivityHelper(this);

    activityHelper.setTitleTextSize(R.string.Store_Locator, false);

    urlString = getString(R.string.location_url);

    WebViewSettings();

    LoadWebPage(urlString);
}

public void LoadWebPage(String url){

    try {
        webView.loadUrl(url);
        Log.d(TAG, "URL" + url + "connected");
    } 
    catch (Exception e) {
            Log.d(TAG, "URL: " + url + " couldn't connect.");
    }
}

public void WebViewSettings(){

    webView = (WebView) findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.canGoBack();

    Uri uri = Uri.parse(urlString);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);

    myTimer = new Timer();
    //Start this timer when you create you task
    myTimer.schedule(new loaderTask(), 20000);

    webView.setWebViewClient(new WebViewClient(){

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals(urlString)) {
                // This is my web site, so do not override; let my WebView load the page
                return false;
            }
            // Otherwise, 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;
        }

        @Override
        public void onLoadResource(WebView view, String url) {
            // Check to see if there is a progress dialog
            if (progressDialog == null) {
                progressDialog = new ProgressDialog(context);
                progressDialog.setTitle("Loading...");
                progressDialog.setMessage("Please wait.");
                progressDialog.setCancelable(true);
                progressDialog.setIndeterminate(true);
                progressDialog.show();
            }
        }

        @Override
        public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
             handler.proceed();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            isPageLoadedComplete = true;
            View mapHeight = (View) findViewById(R.id.webview);
            int height = mapHeight.getHeight();
            Log.d("map height","map height" + height);
            // Page is done loading;
            // hide the progress dialog and show the webview
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
            }
        }

        @Override
        public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) {
            AlertDialog();
        }
    });
}

public class loaderTask extends TimerTask {
      public void run() {
        System.out.println("Times Up");
        if(isPageLoadedComplete){
            Log.d(TAG, "The page loaded perfectly");
            myTimer.cancel();
        }else{
            Log.d(TAG, "The page was not loaded correctly");
            try{
                if (progressDialog.isShowing()) {
                    progressDialog.dismiss();
                    progressDialog = null;
                }
            }catch(Exception e) {
                e.printStackTrace();
            }

            runOnUiThread(new Runnable() 
            {
               public void run() 
               { 
                   AlertDialog();
               }
            }); 
        }
    }
}

public void AlertDialog(){

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);

    alertDialog.setTitle(R.string.Search_Error);
    alertDialog.setMessage(R.string.Failure_to_create_URL_connection);

    alertDialog.setNeutralButton(R.string.OK, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int which) {
            dialog.cancel();
        }
    });

    alertDialog.show();
}

public void infoView(View aView) {
    Intent intent = new Intent(this, InfoActivity.class);
    startActivity(intent);
}

} Fsie

0 个答案:

没有答案