如何通过zamarin中的webview链接拨打电话

时间:2015-09-16 15:06:58

标签: android webview xamarin

我无法弄清楚如何通过网页浏览中的链接在xamarin中拨打电话。似乎我不能正确理解意图和活动,因为我将StartActivity放在错误的位置,并且编译器说它在当前上下文中不存在。除了那个错误,我甚至接近在我的代码中是正确的还是我错过了什么?我试图抓住webview中的超链接是否是电话号码,如果是,请启动电话。任何帮助nube将不胜感激。感谢

using System;
using Android.Webkit;
using Android.App;
using Android.Content;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Text;
using Android.Net;

namespace bobo
{
[Activity (Label = "bobo", MainLauncher = true, Icon = "@drawable/icon", Theme = "@android:style/Theme.NoTitleBar")]
public class MainActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        var webview = new WebView(this);
        webview.Settings.JavaScriptEnabled = true;
        webview.Settings.SetGeolocationEnabled(true);
        webview.SetWebViewClient(new MyWebViewClient());
        webview.SetWebChromeClient(new MyWebChromeClient(this));
        SetContentView(webview);
    }
}

public class MyWebViewClient : WebViewClient
{

    public override bool ShouldOverrideUrlLoading(WebView view, string url)
    {
        if (url.StartsWith("tel:")) { 
            var uri = Android.Net.Uri.Parse(url);
            var intent = new Intent (Intent.ActionDial, uri);
            StartActivity(intent); 
        }
        else if(url.StartsWith("http:") || url.StartsWith("https:")) {
            view.LoadUrl(url);
        }
        return true;  
    }
}

public class MyWebChromeClient : WebChromeClient
{
    private readonly Context _context;

    public MyWebChromeClient(Context context)
    {
        _context = context;
    }
}

}

1 个答案:

答案 0 :(得分:0)

如果它不是http / https链接,只需使用Action_View启动它。 Android将负责其余部分。

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