{"id":5574,"date":"2017-03-28T10:00:00","date_gmt":"2017-03-28T01:00:00","guid":{"rendered":"https:\/\/www.gigas-jp.com\/appnews\/?p=5574"},"modified":"2017-03-27T19:13:27","modified_gmt":"2017-03-27T10:13:27","slug":"%e6%96%b0%e4%ba%ba%e6%88%90%e9%95%b7%e8%a8%98%e9%8c%b220th","status":"publish","type":"post","link":"https:\/\/www.gigas-jp.com\/appnews\/archives\/5574","title":{"rendered":"\u65b0\u4eba\u6210\u9577\u8a18\u933220th"},"content":{"rendered":"<p><a href=\"\/appnews\/archives\/5037\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3067\u306f\u3001WebView\u304c\u3069\u306e\u3088\u3046\u306a\u3082\u306e\u304b\u3092\u5b66\u7fd2\u3057\u307e\u3057\u305f<br \/>\n\u524d\u56de\u306e\u7d42\u308f\u308a\u306b\u66f8\u3044\u305f\u3088\u3046\u306b\u3001\u4eca\u56de\u306fWebView\u3068JavaScript\u306e\u9023\u643a\u306b\u3064\u3044\u3066\u5b66\u7fd2\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059<\/p>\n<p><!--more--><\/p>\n<h3>JavaScript\u304b\u3089Android<\/h3>\n<p>JavaScript\u304b\u3089Android\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u65b9\u6cd5\u3067\u3059<\/p>\n<p>\u307e\u305a\u306f\u3001<strong><span style=\"color: #0000ff;\">JavaScript\u304b\u3089\u5b9f\u884c\u3057\u305f\u3044\u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3093\u3060\u30af\u30e9\u30b9<\/span><\/strong>\u3092\u4f5c\u6210\u3057\u307e\u3059<\/p>\n<pre style=\"border: dashed #000000 2px;\"><code>public class JavaScriptInterface {\r\n\tprivate Context context;\r\n\r\n\tpublic JavaScriptInterface(Context context){\r\n\t\tthis.context = context;\r\n\t}\r\n\r\n\t@JavascriptInterface\r\n\tpublic void showToast(String message){\r\n\t\tToast.makeText(context, message, Toast.LENGTH_SHORT).show();\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>JavaScript\u304b\u3089\u306f\u3001showToast\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059<br \/>\n<strong><span style=\"color: #0000ff;\">Android4.2\u4ee5\u964d\u3067\u306f\u3001@JavascriptInterface\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059<\/span><\/strong><br \/>\n\u4eca\u56de\u306f\u3001\u5358\u7d14\u306bhtml\u5185\u306e\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u3089\u3001Toast\u304c\u51fa\u308b\u3088\u3046\u306b\u3057\u307e\u3059<\/p>\n<p>\u3067\u306f\u3001\u30e1\u30a4\u30f3\u306e\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059<\/p>\n<pre style=\"border: dashed #000000 2px;\"><code>\t@Override\r\n\tprotected void onCreate(Bundle savedInstanceState) {\r\n\t\tsuper.onCreate(savedInstanceState);\r\n\t\tsetContentView(R.layout.activity_main);\r\n\r\n\t\twebView = (WebView) findViewById(R.id.webview);\r\n\t\twebView.loadUrl(url);\r\n\t\tWebSettings settings = webView.getSettings();\r\n\t\tsettings.setJavaScriptEnabled(true);\r\n\r\n\t\twebView.addJavascriptInterface(new JavaScriptInterface(this), \"android\");\r\n\t}\r\n<\/code><\/pre>\n<p>addJavascriptInterface\u30e1\u30bd\u30c3\u30c9\u306e\u7b2c1\u5f15\u6570\u306b\u306f\u3001<span style=\"color: #0000ff;\"><strong>\u5148\u307b\u3069\u4f5c\u6210\u3057\u305f\u30af\u30e9\u30b9<\/strong><\/span>\u3092\u6e21\u3057\u307e\u3059<br \/>\n\u7b2c2\u5f15\u6570\u306b\u306f\u3001<strong><span style=\"color: #0000ff;\">JavaScript\u304b\u3089\u306e\u547c\u3073\u51fa\u3057\u306b\u4f7f\u3046\u6642\u306e\u6587\u5b57\u5217<\/span><\/strong>\u3092\u6e21\u3057\u307e\u3059<\/p>\n<p>\u6700\u5f8c\u306b\u3001html\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059<\/p>\n<pre style=\"border: dashed #000000 2px;\"><code>&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\n function showToast(message){\r\n android.showToast(message);\r\n }\r\n&lt;\/script&gt;\r\n\r\n&lt;title&gt;Insert title here&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;input type=\"button\" value=\"Android\u306e\u30c8\u30fc\u30b9\u30c8\u3092\u8868\u793a\"\r\n onclick=\"showToast('JavaScript\u304b\u3089Android\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c')\"\/&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/code><\/pre>\n<p>\u5148\u307b\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u306b\u6e21\u3057\u305f\u6587\u5b57\u5217(&#8220;android&#8221;)\u3068\u30e1\u30bd\u30c3\u30c9\u540d(&#8220;showToast&#8221;)\u3067Android\u5185\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059<\/p>\n<h3>Android\u304b\u3089JavaScript<\/h3>\n<p>Android\u304b\u3089JavaScript\u3092\u5b9f\u884c\u3059\u308b\u65b9\u6cd5\u3067\u3059<\/p>\n<p>\u307e\u305a\u306f\u3001\u5b9f\u884c\u3057\u305f\u3044JavaScript\u3092\u542b\u3093\u3060html\u3092\u4f5c\u6210\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059<\/p>\n<pre style=\"border: dashed #000000 2px;\"><code>&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\n function callJavaScript() {\r\n document.body.innerText = \"JavaScript\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\";\r\n }\r\n&lt;\/script&gt;\r\n\r\n&lt;title&gt;Insert title here&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/code><\/pre>\n<p>html\u306ebody\u306b\u6587\u5b57\u3092\u8a18\u8ff0\u3059\u308bcalljavaScript\u3092Android\u304b\u3089\u547c\u3073\u51fa\u3057\u307e\u3059<br \/>\n\u547c\u3073\u51fa\u3057\u305f\u969b\u306b\u3001\u5b9f\u884c\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u5206\u304b\u308b\u3088\u3046\u306b\u3057\u307e\u3059<\/p>\n<p>\u6b21\u306bAndroid\u304b\u3089\u547c\u3073\u51fa\u3059\u305f\u3081\u306e\u30af\u30e9\u30b9\u3067\u3059<\/p>\n<pre style=\"border: dashed #000000 2px;\"><code>\t@Override\r\n\tprotected void onCreate(Bundle savedInstanceState) {\r\n\t\tsuper.onCreate(savedInstanceState);\r\n\t\tsetContentView(R.layout.activity_main);\r\n\r\n\t\twebView = (WebView) findViewById(R.id.webview);\r\n\t\twebView.loadUrl(url);\r\n\t\tWebSettings settings = webView.getSettings();\r\n\t\tsettings.setJavaScriptEnabled(true);\r\n\r\n\t\tfindViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void onClick(View v) {\r\n\t\t\t\tString script = \"callJavaScript()\";\r\n\t\t\t\tif(webView != null) {\r\n\t\t\t\t\twebView.evaluateJavascript(script, null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n<\/code><\/pre>\n<p>\u30af\u30ea\u30c3\u30af\u3092\u62bc\u3057\u305f\u3089\u5b9f\u884c\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f<br \/>\nJavaScript\u306e\u547c\u3073\u51fa\u3057\u306f<strong><span style=\"color: #0000ff;\">loadUrl(&#8220;javascript:&#8221; + script)\u3067\u3082\u3067\u304d\u308b<\/span><\/strong>\u306e\u3067\u3059\u304c\u3001<span style=\"color: #0000ff;\"><strong>4.4\u4ee5\u964d\u3067\u306fevaluateJavascript\u3092\u4f7f\u7528\u3059\u308b<\/strong><\/span>\u3088\u3046\u306b\u4fc3\u3055\u308c\u3066\u3044\u307e\u3059<\/p>\n<h3>\u7d42\u308f\u308a\u306b<\/h3>\n<p>Android\u3068JavaScript\u3092\u9023\u643a\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u5bc6\u63a5\u306a\u95a2\u4fc2\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u3001\u4fee\u6b63\u6642\u306b\u306f\u624b\u9593\u304c\u5897\u3048\u308b\u53ef\u80fd\u6027\u3082\u3042\u308a\u307e\u3059<br \/>\n\u9023\u643a\u3059\u308b\u306b\u3057\u3066\u3082\u3001\u307b\u3093\u306e\u4e00\u90e8\u5206\u306e\u307f\u3067\u5b9f\u88c5\u3059\u308b\u306e\u304c\u3044\u3044\u3068\u601d\u3044\u307e\u3059<\/p>\n<p>\u706b\u66dc\u65e5\u62c5\u5f53\uff1apoppy<\/p>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/5574\" ><\/g:plusone><\/div>\n            <div class=\"wsbl_hatena_button\"><a href=\"\/\/b.hatena.ne.jp\/entry\/https:\/\/www.gigas-jp.com\/appnews\/archives\/5574\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\"\u65b0\u4eba\u6210\u9577\u8a18\u933220th\" data-hatena-bookmark-layout=\"standard\" title=\"\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0\"> <img src=\"\/\/b.hatena.ne.jp\/images\/entry-button\/button-only@2x.png\" alt=\"\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0\" width=\"20\" height=\"20\" style=\"border: none;\" \/><\/a><script type=\"text\/javascript\" src=\"\/\/b.hatena.ne.jp\/js\/bookmark_button.js\" charset=\"utf-8\" async=\"async\"><\/script><\/div>\n            <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/5574\" data-text=\"\u65b0\u4eba\u6210\u9577\u8a18\u933220th\" data-via=\"GIGASJAPAN_APPS\" data-lang=\"ja\">Tweet<\/a><\/div>\n            <div class=\"wsbl_facebook_like\"><div id=\"fb-root\"><\/div><fb:like href=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/5574\" layout=\"button_count\" action=\"like\" width=\"100\" share=\"false\" show_faces=\"false\" ><\/fb:like><\/div>\n            <div class=\"wsbl_facebook_send\"><div id=\"fb-root\"><\/div><fb:send href=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/5574\" colorscheme=\"light\" ><\/fb:send><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306e\u8a18\u4e8b\u3067\u306f\u3001WebView\u304c\u3069\u306e\u3088\u3046\u306a\u3082\u306e\u304b\u3092\u5b66\u7fd2\u3057\u307e\u3057\u305f \u524d\u56de\u306e\u7d42\u308f\u308a\u306b\u66f8\u3044\u305f\u3088\u3046\u306b\u3001\u4eca\u56de\u306fWebView\u3068JavaScript\u306e\u9023\u643a\u306b\u3064\u3044\u3066\u5b66\u7fd2\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[100,12],"tags":[56,79,111],"acf":[],"_links":{"self":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts\/5574"}],"collection":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/comments?post=5574"}],"version-history":[{"count":7,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts\/5574\/revisions"}],"predecessor-version":[{"id":5584,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts\/5574\/revisions\/5584"}],"wp:attachment":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/media?parent=5574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/categories?post=5574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/tags?post=5574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}