android - Webview - 在外部应用程序和浏览器/android 中打开链接

标签 android webview external

我是制作 Android 应用程序的初学者。我用 HTML 制作了一个 Web 应用程序,我希望能够在我在 android studio 中制作的应用程序中使用它。我设法在 android studio 中制作了一个简单的 web View ,这使得我的 web 应用程序在我的设备上测试时工作正常。唯一的问题是 Web View 处理我的 Web 应用程序中的所有 URL。 Web 应用程序由选项卡组成,当我单击这些选项卡时,这些选项卡会将我引导至不同的页面,这正是我想要的。但我有联系按钮和不同的链接,我想从 WebView 中“发布”。让我们以联系人按钮为例。我有一个 Galaxy note,我用它来测试我的应用程序。当我在手机上打开我的应用程序时,我看到了我的 Web 应用程序并且我可以四处导航。当我单击联系人按钮时,Web View 会处理该链接并给我一个“页面无法加载”,而不是在我的手机上打开邮件应用程序。我还有一些带有链接的按钮,我希望这些按钮能够在手机上的外部浏览器中打开。我希望你能理解我的问题,我为我糟糕的英语感到抱歉。

这是我的一些网页 View 代码。

主 Activity .java

public class MainActivity extends ActionBarActivity {

WebView browser;

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



    browser = (WebView) findViewById(R.id.wvwMain);

    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setLoadWithOverviewMode(true);
    browser.getSettings().setUseWideViewPort(true);

    browser.setWebViewClient(new ourViewClient());
    try {
        browser.loadUrl("http://WebAppURL");
    } catch (Exception e) {
        e.printStackTrace();
    }

}

OurViewClient.java

public class ourViewClient extends WebViewClient {

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

    return true; 
 }    
}

最佳答案

试试用这种方式实现你的WebViewClient

 private class VideoWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            try{
                System.out.println("url called:::" + url);
                if (url.startsWith("tel:")) {
                    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
                    startActivity(intent);
                }  else if (url.startsWith("http:")
                        || url.startsWith("https:")) {

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

                }  else if (url.startsWith("mailto:")) {

                    MailTo mt=MailTo.parse(url);

                    send_email(mt.getTo());

                }
                else {
                    return false;
                }
            }catch(Exception e){
                e.printStackTrace();
            }

            return true;
        }

    }

并创建类似发送邮件的功能

   public void send_email(String email_add) {
    System.out.println("Email address::::" + email_add);

    final Intent emailIntent = new Intent(
            android.content.Intent.ACTION_SEND);
    emailIntent.setType("plain/text");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
            new String[] { email_add });
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "");
    yourActivity.this.startActivity(
            Intent.createChooser(emailIntent, "Send mail..."));

}

关于android - Webview - 在外部应用程序和浏览器/android 中打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869429/

相关文章:

android - 在 WebView html 问题中设置字体样式

android - 等到手机屏幕亮起

android - 如何在自定义操作栏上获取 onClickListener() 事件

java - 如何使用 appium 从已打开的 Activity 启动 Android 应用程序

iphone:如何在 webView 中放置主页按钮

html - 是否可以在 android 中使用 loadDataWithBaseURL() 方法显示图像?

ruby-on-rails - 从外部表单接收POST

sql - 是否可以在 PLSQL/Oracle 中动态创建外部表

Android - 等待外部存储准备就绪

android - 如何在android中获得两次时间之间的分钟差