Xamarin - Android.Webkit 无法访问
Xamarin - Android.Webkit can't be accessed
我们正在尝试为 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));
}
}
}
我们有 'using Android.Webkit',但遇到错误“类型或名称空间名称 'Webkit' 在名称空间 `[AppName].Android 中不存在”。您是否缺少程序集参考?'
它似乎在我们的应用命名空间内寻找它,这似乎就是问题所在。但我们不知道如何解决它。
如有任何帮助,我们将不胜感激。
听起来它与您项目中的另一个 Android 命名空间混淆了。尝试使用全局命名空间
global::Android.Webkit.WebView
你也可以定义一个别名
using web = global::Android.Webkit.WebView;
我们正在尝试为 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));
}
}
}
我们有 'using Android.Webkit',但遇到错误“类型或名称空间名称 'Webkit' 在名称空间 `[AppName].Android 中不存在”。您是否缺少程序集参考?'
它似乎在我们的应用命名空间内寻找它,这似乎就是问题所在。但我们不知道如何解决它。
如有任何帮助,我们将不胜感激。
听起来它与您项目中的另一个 Android 命名空间混淆了。尝试使用全局命名空间
global::Android.Webkit.WebView
你也可以定义一个别名
using web = global::Android.Webkit.WebView;