Android アプリでcrosswalkランタイムを使用しようとしています。Android 4+でこれを試しました。
私はいくつかのjsとhtmlコードを手に入れましたが、それは私にとって完璧に機能しました。しかし、Android WebView のようには機能しません。Webview では、Java コードから JavaScript 関数を呼び出すことができます。しかし、横断歩道には選択肢がありませんでした。何か案が?
ありがとう
Android アプリでcrosswalkランタイムを使用しようとしています。Android 4+でこれを試しました。
私はいくつかのjsとhtmlコードを手に入れましたが、それは私にとって完璧に機能しました。しかし、Android WebView のようには機能しません。Webview では、Java コードから JavaScript 関数を呼び出すことができます。しかし、横断歩道には選択肢がありませんでした。何か案が?
ありがとう
app/module/lib レベルの build.gradle 内の Android Studio で、これを依存関係に追加します。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'org.xwalk:xwalk_core_library:12.41.296.5'}
プロジェクトを同期
xml レイアウト リソースを作成する
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<org.xwalk.core.XWalkView
android:id="@+id/xwalkWebView"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
/>
</LinearLayout>
活動中 onCreate またはそれによって呼び出される
// Don't know how this helps if the preferences are connected?
XWalkPreferences.setValue("enable-javascript", true);
XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
xWalkView=(XWalkView)findViewById(R.id.xwalkWebView);
xWalkView.addJavascriptInterface(new JS_Bind(this, xWalkView),"Android");
xWalkView.clearCache(true);
xWalkView.load(COM_URL, null);
クラス JS_Bind を作成します。
public class JS_Bind {
private static final String TAG = "JS_Bind";
private Context context;
private XWalkView xWalkWebView;
public JS_Bind(Context c, XWalkView xWalkWebView) {
context = c;
this.xWalkWebView = xWalkWebView;
}
@JavascriptInterface
public void showToast(String toast) {
Log.d(TAG, "showToast(String toast)");
Toast.makeText(context, toast, Toast.LENGTH_SHORT).show();
}
}
Web Java スクリプトでは、次のように関数を呼び出します。
Android.showToast(toast);
標準の Web ビュー デコレータではなく、正しい xwalk @JavaScripInterface デコレータをインポートしてください。
上記の応答はほぼ完了しています。@Someone Somewhere がコメントしたように、Crosswalk Webview からネイティブ機能を呼び出すには、これらを行に追加する必要があります。
import org.xwalk.core.XWalkView;
@org.xwalk.core.JavascriptInterface
に、デフォルトの注釈の代わりにこれを置きます@JavascriptInterface