San*_*ung 1 android webview typescript
Android将JS界面注入网络视图:
JavaScriptInterface javaScriptInterface = new JavaScriptInterface(this);
browser.addJavascriptInterface(javaScriptInterface, "qp");
Run Code Online (Sandbox Code Playgroud)
该界面如下所示:
public class JavaScriptInterface {
private ILoadEpi iLoadEpi;
public JavaScriptInterface(ILoadEpi iLoadEpi) {
this.iLoadEpi = iLoadEpi;
}
@JavascriptInterface
public void passParameters(String fldMerchCode,
String fldMerchRefNbr,
String fldTxnAmt,
String fldTxnScAmt,
String fldDatTimeTxn,
String fldDate1,
String fldDate2
) {
Log.d("fldMerchCode", fldMerchCode);
Log.d("fldMerchRefNbr", fldMerchRefNbr);
Log.d("fldTxnAmt", fldTxnAmt);
Log.d("fldTxnScAmt", fldTxnScAmt);
Log.d("fldDatTimeTxn", fldDatTimeTxn);
Log.d("fldDate1", fldDate1);
Log.d("fldDate2", fldDate2);
iLoadEpi.loadEpi(fldMerchCode, fldMerchRefNbr, fldTxnAmt, fldTxnScAmt, fldDatTimeTxn, fldDate1, fldDate2);
}
}
Run Code Online (Sandbox Code Playgroud)
使用TypeScript开发的网络应用如何将其称为Android?
或更广泛地说,TypeScript应用程序如何调用Android方法?
为Android将注入的JavaScriptInterface类型添加TypeScript定义。然后使用Android注入的实例的名称声明一个变量,然后照常使用它。在您的示例中,您需要的定义是:
interface JavaScriptInterface {
passParameters(fldMerchCode: string,
fldMerchRefNbr: string,
fldTxnAmt: string,
fldTxnScAmt: string,
fldDatTimeTxn: string,
fldDate1: string,
fldDate2: string) : void;
}
declare var qp: JavaScriptInterface;
Run Code Online (Sandbox Code Playgroud)
qpAndroid注入的实例将具有passParameters可用的方法。该实例是由Android创建的,名称qp中包含您对的调用browser.addJavaScriptInterface(javaScriptInterface, "qp");。请注意,根据passParameters函数的使用方式,您可能需要将返回类型声明为,any而不是void。
这是一个基于Android绑定JS的完整示例:
在您的HTML文件中,添加:
<input type="button" value="Say hello" id ="button"/>
<script src="./generated/bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)
我假设您生成/转译的JavaScript ./generated/bundle.js相对于HTML文件位于。
在您的TypeScript文件中,添加:
interface WebAppInterface {
showToast(toast: string) : any;
}
declare var android: WebAppInterface;
var button = document.getElementById('button');
button.onclick = ()=>android.showToast('Hello Android!');
Run Code Online (Sandbox Code Playgroud)
请注意,链接的Android示例为注入的对象命名android:
webView.addJavascriptInterface(new WebAppInterface(this), "android");
Run Code Online (Sandbox Code Playgroud)
如果链接的示例发生更改或消失,请参见以下示例WebAppInterface.java:
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |