Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Webview-如何在默认浏览器中打开外部链接_Webview - Fatal编程技术网

Android Webview-如何在默认浏览器中打开外部链接

Android Webview-如何在默认浏览器中打开外部链接,webview,Webview,我是android应用程序的初学者。我已经用HTML制作了一个web应用程序,我希望能够在Android Studio中制作的应用程序中使用它。我设法在Android Studio中创建了一个简单的web视图,当我在我的设备上测试它时,它使我的web应用程序运行良好。唯一的问题是web视图处理web应用程序中的所有URL web应用程序由选项卡组成,当我单击不同的页面时,这些选项卡会将我指向不同的页面,这正是我想要的。但是我有联系人按钮和不同的链接,我想从网络视图中“释放”。让我们以联系人按钮为

我是android应用程序的初学者。我已经用HTML制作了一个web应用程序,我希望能够在Android Studio中制作的应用程序中使用它。我设法在Android Studio中创建了一个简单的web视图,当我在我的设备上测试它时,它使我的web应用程序运行良好。唯一的问题是web视图处理web应用程序中的所有URL

web应用程序由选项卡组成,当我单击不同的页面时,这些选项卡会将我指向不同的页面,这正是我想要的。但是我有联系人按钮和不同的链接,我想从网络视图中“释放”。让我们以联系人按钮为例。我有一个Galaxy便笺,我正在用它来测试我的应用程序。当我在手机上打开我的应用程序时,我会看到我的Web应用程序,我可以四处浏览

当我单击联系人按钮时,web视图处理链接,并给我一个“页面无法加载”,而不是打开手机上的邮件应用程序。我还有一些带有链接的按钮,我希望能够在手机的外部浏览器中打开这些按钮

package com.sooqaman.sooqaman;



import android.app.AlertDialog;
import android.content.DialogInterface;
//import android.content.Intent;
//import android.os.Handler;
import android.media.Image;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
//import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    String ShowOrHideWebViewInitialUse = "show";
    private WebView webview ;
    private ProgressBar spinner;
    private boolean isRedirected;
    private ImageView image;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image =(ImageView) findViewById(R.id.image2);
        webview =(WebView)findViewById(R.id.webView);
        spinner = (ProgressBar)findViewById(R.id.progressBar1);
        textView = (TextView) findViewById(R.id.textView);
        webview.setWebViewClient(new CustomWebViewClient());

        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setDomStorageEnabled(true);
        webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
        webview.loadUrl("https://www.darbeauty.com");

    }

    // This allows for a splash screen
    // (and hide elements once the page loads)
    private class CustomWebViewClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView webview, String url, Bitmap favicon) {

            // only make it invisible the FIRST time the app is run
            if (ShowOrHideWebViewInitialUse.equals("show")) {
                webview.setVisibility(webview.INVISIBLE);
            }
            webview.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress) {
                    spinner.setProgress(progress);
                    if (progress == 100) {
                        spinner.setVisibility(View.GONE);
                        image.setVisibility(View.GONE);
                        textView.setVisibility(View.GONE);

                    } else {
                        spinner.setVisibility(View.VISIBLE);

                    }
                }
            });
        }

        @Override
        public void onPageFinished(WebView view, String url) {

            ShowOrHideWebViewInitialUse = "hide";
            spinner.setVisibility(View.GONE);
            image.setVisibility(View.GONE);
            textView.setVisibility(View.GONE);


            view.setVisibility(webview.VISIBLE);
            super.onPageFinished(view, url);

        }

        public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) {
            try {
                webView.stopLoading();
            } catch (Exception e) {
            }

            if (webView.canGoBack()) {
                webView.goBack();
            }

            webView.loadUrl("file:///android_asset/error.html");
            AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
            //alertDialog.setTitle("خطأ!!");
            //alertDialog.setMessage("تحقق من إتصالك بالإنترنت وحاول مرة آخرى... :)");
            alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "حاول مرة آخرى", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                    startActivity(getIntent());
                }
            });

            alertDialog.show();
            super.onReceivedError(webView, errorCode, description, failingUrl);
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (webview.canGoBack()) {
                        webview.goBack();
                    } else {
                        finish();
                    }
                    return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }
}```