- ベストアンサー
PhoneGapとjavaの変数の取得
TELEPHONY_SERVICEのgetDeviceId()で取得できる値をPhoneGapから取得する方法を教えてください。 直接取得できるなら直接の方法を教えてください。 MainActivity.javaにgetDeviceId()で取得した値をグローバル変数などに代入してPhoneGapでJavaScriptなどでその値を参照することができましたらその方法も教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>webviewを作るために >WebView webView = new WebView(this); >setContentView(webView); >という2行を追加してもブラウザが2重に作られたりしないでしょうか? ああ、いえ、そうじゃなくて、単に「WebViewのaddJavascriptInterfaceを使え」という意味でwebviewと書いただけです。 cordovaなら、this.appViewで組み込まれているWebViewがとれたはずです。多分、PhoneGapでも同じでしょう。
その他の回答 (1)
device.uuid でUUIDは取得できたと思います。deviceについて調べてみてください。 Java側の機能をJavaScriptから呼び出したい場合は、addJavascriptInterfaceを利用します。例えば、Java側に利用したい機能をクラスとして作成します。 class Hoge { public void hoge(){} } これをActivity起動時にaddJavascriptInterfaceでWebViewに登録します。 webview.addJavascriptInterface(new Hoge(), "hoge"); これでHogeインスタンスが"hoge"で登録されます。後はJavaScript側で、hoge.hoge();といった形でこれを呼び出すだけです。
補足
ありがとうございます。 webview.addJavascriptInterface(new Hoge(), "hoge"); のwebviewが分かりませんでした。 public class MainActivity extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.clearCache(); super.loadUrl("file:///android_asset/www/index.html"); これが質問時点のソースです。 webviewを作るために WebView webView = new WebView(this); setContentView(webView); という2行を追加してもブラウザが2重に作られたりしないでしょうか? public class MainActivity extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webview = new WebView(this); setContentView(webview); webview.addJavascriptInterface(new Hoge(), "hoge"); super.clearCache(); super.loadUrl("file:///android_asset/www/index.html");