私は次のコードを使用しています、
var iphoneUrl = 'myScheme://{0}?{1}'
function callNativeFunction(functionName) {
var args = Array.prototype.slice.call(arguments, 1);
if (window.andriod) {
andriod[functionName].apply(this, args);
}
else {
var params = '';
for (var i = 0, len = args.length; i < len; i++) {
params += 'param' + (i + 1) + '=' + encodeURIComponent(args[i]) + '&';
}
params = params.slice(0, -1);// remove last &
window.location = iphoneUrl.format(functionName, params);
}
}
callNativeFunction('functionName', 'param1');
これがString.Formatです。
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
これは素晴らしいですが、AndroidのWebビューに適用されますが機能していません。alert(andriod[functionName])
ください 'function myFunc(..){[native Code]}'
。ただしandriod[functionName]
、関数は呼び出されません。使用しない場合andriod.myFunc
は機能しますが、関数をハードコーディングしたくありません。