Xamarin - 无法访问 Android.Webkit

Max*_*Max 2 xamarin.android xamarin-studio xamarin.forms

我们正在尝试为 WebView 创建自定义渲染器。唯一的问题是 Xamarin 找不到 Android.Webkit.WebView。

using [AppName];
using [AppName].Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using Mono;
using Android.Webkit;

[assembly: ExportRenderer(typeof(HybridWebView),         typeof(HybridWebViewRenderer))]
namespace [AppName].Droid
{
public class HybridWebViewRenderer : ViewRenderer<HybridWebView,     Android.Webkit.WebView>
{
    const string JavaScriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";

    protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
    {
        base.OnElementChanged(e);

        if (Control == null)
        {
            var webView = new Android.Webkit.WebView(Forms.Context);
            webView.Settings.JavaScriptEnabled = true;
            SetNativeControl(webView);
        }
        if (e.OldElement != null)
        {
            Control.RemoveJavascriptInterface("jsBridge");
            var hybridWebView = e.OldElement as HybridWebView;


        }
        if (e.NewElement != null)
        {
            Control.LoadUrl(string.Format("file:///android_asset/Content/{0}", Element.Source));
            InjectJS(JavaScriptFunction);
        }
    }

    void InjectJS(string script)
    {
        if (Control != null)
        {
            Control.LoadUrl(string.Format("javascript: {0}", script));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们有“使用 Android.Webkit”,但遇到错误“类型或命名空间名称“Webkit”在命名空间“[AppName].Android”中不存在。您是否缺少程序集参考?

它似乎在我们的应用程序命名空间中寻找它,这似乎是问题所在。但我们不知道如何解决它。

任何帮助将不胜感激。

Jas*_*son 6

听起来它与项目中的另一个 Android 命名空间混淆了。尝试使用全局命名空间

global::Android.Webkit.WebView
Run Code Online (Sandbox Code Playgroud)

你也可以定义一个别名

using web = global::Android.Webkit.WebView;
Run Code Online (Sandbox Code Playgroud)