スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Android】JsBridgeで引数に数字を使うときは必ずすること

こんにちは
最近JSBridgeの仕組みをいじっていてAndroid2系とAndroid4系で違いを発見したのでまとめます。

1. ブリッジのクラス定義


ここではJSブリッジする時にjsからのインターフェースとなるクラスを定義してみます。


単純にidを受け取りTestActivityに対してidを一緒につけてintentを発行するだけの簡単な処理ですね。

2.WebViewにブリッジとして設定する


1.で作成したクラスを実際にwebviewにブリッジとして設定してみます。



注意すべきはaddJavascriptInterfaceはJSで指定するクラス名だと言うことです。ここでは1.で作成したクラスと同名にしていますが、極端な話全く違う物でも構いません。要はJSと合ってさえいれば問題ないです。

3.javascript側で実行する




これでjavascriptからネイティブの機能の呼び出しに成功しました。

4.注意点とまとめ


ひとつ注意点があります。js側の実装でexecuteIntentに渡す場合Stringで文字列にしているのには理由があります。
ここで整数を代入しても問題はありません。いい感じにしてくれます。
ところが整数にしてしまうとAndroid4.x系では桁数の大きい数字は1.000000e+06のようなフォーマットに変換されてしまいますので注意が必要です。Android 2.x系では起きない現象であることは確認済みです。
両方のOSで満足の行く挙動を実現するのにはStringで文字列にしておいたほうがよさそうです。

OSでの違いにはこの点に関しても要注意だと思います。

結論は

JsBridgeで引数に数字を使うときは必ず文字列で渡す

というのが安心だと思います。
僕もたまたま発見したので幸運でした。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Android  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。