Edited at

Xamarin.AndroidでのJavaScript⇔WebView間のやり取り


addJavascriptInterface

AndroidのWebViewはaddJavascriptInterfaceメソッドでJavaScriptから呼び出せるメソッドを作成できる

参考: JavaScript から Android 側のメソッドを呼び出す

これがXamarinの場合はいくつかおまじないが必要という話


JavaScript用のクラスを作る

ポイントは3つ


  1. Java Objectを継承させる

  2. 公開するメソッドにJavascriptInterface属性を付与

  3. 公開するメソッドにExport属性を付与


JavaScriptHandler.cs

//1. Java Objectを継承

class JavaScriptHandler : Java.Lang.Object
{
//2. 3. 属性付与
[Export]
[JavascriptInterface]
public void hogehoge()
{
SomeFunction();
}
}

1.はXamarinでJavaっぽいことやるときはいつものおまじない

2.はAndroid 4.2以降addJavascriptInterfaceがセキュリティ面で制限されたことによる影響でJavaの場合でも必要

3.がXamarinのときにだけ必要なおまじない

ここにたどり着くのに色々調べまわった…

なお、これをつけるためにはプロジェクトの参照にMono.Android.Exportを追加する必要がある


参考