Android Webview-如何在默认浏览器中打开外部链接
我是android应用程序的初学者。我已经用HTML制作了一个web应用程序,我希望能够在Android Studio中制作的应用程序中使用它。我设法在Android Studio中创建了一个简单的web视图,当我在我的设备上测试它时,它使我的web应用程序运行良好。唯一的问题是web视图处理web应用程序中的所有URL web应用程序由选项卡组成,当我单击不同的页面时,这些选项卡会将我指向不同的页面,这正是我想要的。但是我有联系人按钮和不同的链接,我想从网络视图中“释放”。让我们以联系人按钮为例。我有一个Galaxy便笺,我正在用它来测试我的应用程序。当我在手机上打开我的应用程序时,我会看到我的Web应用程序,我可以四处浏览 当我单击联系人按钮时,web视图处理链接,并给我一个“页面无法加载”,而不是打开手机上的邮件应用程序。我还有一些带有链接的按钮,我希望能够在手机的外部浏览器中打开这些按钮Android Webview-如何在默认浏览器中打开外部链接,webview,Webview,我是android应用程序的初学者。我已经用HTML制作了一个web应用程序,我希望能够在Android Studio中制作的应用程序中使用它。我设法在Android Studio中创建了一个简单的web视图,当我在我的设备上测试它时,它使我的web应用程序运行良好。唯一的问题是web视图处理web应用程序中的所有URL 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);
}
}```