【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
基礎知識 Androidアプリケーションで埋め込みブラウザのようなものを実現するためのViewコンポーネントであるandroid.webkit.WebViewには次のようなシグネチャでaddJavascriptIntefaceというメソッドが生えています。 http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String) これは、簡単に言うとJavaのオブジェクトをWebView内でロードされたJavaScriptから叩けるようになる、というものです。例えば class JSInterface { private Context context; public JSInterface(Context c
以前、WebViewの長押しについて書きましたが 2.3からどうも挙動が変わってるみたいなのでメモしておきます。 (ついでに前回の記事で一部ミスってたので修正しておきました。) ざっと確認したところ、WebViewのどこを押しても長押しのイベントが走るみたいです。 確認するためのコードは以下のようになります。前回とほぼ一緒ですが。 mWebView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Log.d(TAG, "onLongClick"); WebView webView = (WebView) view; WebView.HitTestResult hr = webView.getHitTestResult(); Lo
WebViewの中で特定のWebサイトを表示する場合、一番シンプルな記述は以下のようなものです。 WebView webview = new WebView(this); webview.loadUrl(url); ただこの記述だとHTMLがブラウザで描画可能な状態になる...
Android SDKのJavaDocの説明はかなり簡素なんだけど、WebViewのaddJavascriptInterfaceの説明は珍しく説明が多い。 端的に意訳すると、「addJavascriptInterfaceを使うと、キミのアプリケーションをJavaScriptから操作できるようになるよ。とても便利な便利だけど、危険なセキュリティの問題があるよ。キミが書いたHTML以外では使わないでね。」という感じ。 「オブジェクトを公開する」行為が危険だというのは、技術者は直感的にわかると思うけど、じゃあどれくらい危険なのか実際に試してみた。 まず、次のようなAndroidアプリケーションを作った。 「android.permission.INTERNET」をパーミッションに指定して、WebViewを画面に設定し、後述するHTMLを開くようにした。 WebViewClientの説明は割愛。
追記: 指摘が多かったので書いておきます。勝手にSSLの証明書検証をスキップするアプリはセキュリティホールのあるアプリとして扱われるので注意してください。 標準のブラウザのようにダイアログを出したり、アプリでアクセスを許可しているドメインかどうかチェックしたりするべきでしょう。 あと、この方法を格別オススメしているわけではありません。あくまで対処法です。あしからず。 WebView で https で提供されている URL のサイトにアクセスしようとしたとき、証明書がオレオレ証明書だったり、Android にデフォルトで入っている信頼済証明書機関(trusted certificate authorities)に入っていない場合 SSL のエラーが発生し、処理がキャンセルされ white screen / empty screen (つまり真っ白画面)になります。 例えば、いくつかの CA
公式リファレンスはこちら "WebView | Android Developers" ・AndroidManifest.xml にパーミッションの設定を忘れずに! <uses-permission android:name="android.permission.INTERNET" /> ・onCreate でインスタンスを作る WebView webview = new WebView(this); setContentView(webview); ・layout xml で定義する setContentView(R.layout.main); webview = (WebView) findViewById(R.id.webview); main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く