こんにちは私はxamarinのフォームpclプロジェクトでハイブリッドwebviewを実装しました。私はmailtoリンクを作成したhtmlページを持っていますが、それをクリックしても機能していないので、Webページが見つかりません。Xamarinはハイブリッドウェブを見ていますmailto link not working
uwpでは、アプリを起動するよう求めています。 Droid-
public class HybridWebViewRenderer : ViewRenderer<HybridWebView, Android.Webkit.WebView>
{
const string JavaScriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
const string downloadFunction = "function downloadbook(data){jsBridge.invokeDownloadAction(data);}";
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
{
base.OnElementChanged(e);
Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);
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;
hybridWebView.Cleanup();
}
if (e.NewElement != null)
{
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
Control.LoadUrl(string.Format("file:///android_asset/Content/{0}", Element.Uri));
//string url = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), Element.Uri);
//Control.LoadUrl(string.Format("file://{0}", url));
Task.Run(() => {
Task.WaitAny(Task.Delay(2000));
InjectJS(JavaScriptFunction);
CallJS();
});
}
}
void InjectJS(string script)
{
if (Control != null)
{
Control.LoadUrl(string.Format("Javascript: {0}", script));
}
}
void CallJS()
{
if (Control != null)
{
try
{
}
catch (Exception ex)
{ }
}
}
}
ハイブリッドウェブビュー – Sonali
@Sonaliにナビゲート中のイベントはありません。「ナビゲーションイベント」(https://developer.xamarin.com/api/event/Xamarin.Forms.WebView.Navigating/) WebView'。 –
@Grace Feng - MSFTどうですか?実際に私はxamarinを初めて使っています。だからどこでこのイベントを購読できますか? – Sonali