※ Android Studio : 標準的な WebView をベースにしています 拡張子:txtvbswsfjsphpjavahtmlutf8sjis package sample.lightbox.webbrowser; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { // WebView のインスタンス private WebView wv = null; // 表示されているページの URL private String startPage = null; // 初期表示ページ private String initPage = "http://10.0.2.2/test/001.php"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // WebView のインスタンスを取得 wv = (WebView) MainActivity.this.findViewById(R.id.webView); // Webページとのインターフェイスを登録します // Webページ上からは、androidObject.toAndroid で呼ぶ事ができます // (toAndroid は、@JavascriptInterface で登録したメソッド) wv.addJavascriptInterface(new JavaScriptAccess(new JavaScriptAccess.OnGetWebDataListener() { @Override public void onWebGetDataListener(String textData) { Log.i("lightbox","イベント:"+textData); } }), "androidObject"); // WebView の表示履歴を戻る為のボタン MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { wv.goBack(); } }); // Webページの JavaScript の呼び出し MainActivity.this.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { wv.loadUrl("javascript:getWebPageData()"); } }); // 必ず必要な JavaScript を有効にする設定 wv.getSettings().setJavaScriptEnabled(true); // 必ず必要な設定 wv.setWebViewClient(new WebViewClient(){ // 必ず必要な設定 : 常に WebView 内でページを表示する為 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i("lightbox", "shouldOverrideUrlLoading"+url); return super.shouldOverrideUrlLoading(view, url); } // オプション : 表示されたページの URL を変数にセット @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.i("lightbox", "onPageStarted:" + url); startPage = url; } // オプション : ページを表示し終わってから発生するイベント @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }); // 目的のページを表示する wv.loadUrl(initPage); } @Override protected void onStop() { super.onStop(); wv.clearHistory(); wv.clearCache(true); Log.i("lightbox", "onStop"); } }
package sample.lightbox.webbrowser; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { // WebView のインスタンス private WebView wv = null; // 表示されているページの URL private String startPage = null; // 初期表示ページ private String initPage = "http://10.0.2.2/test/001.php"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // WebView のインスタンスを取得 wv = (WebView) MainActivity.this.findViewById(R.id.webView); // Webページとのインターフェイスを登録します // Webページ上からは、androidObject.toAndroid で呼ぶ事ができます // (toAndroid は、@JavascriptInterface で登録したメソッド) wv.addJavascriptInterface(new JavaScriptAccess(new JavaScriptAccess.OnGetWebDataListener() { @Override public void onWebGetDataListener(String textData) { Log.i("lightbox","イベント:"+textData); } }), "androidObject"); // WebView の表示履歴を戻る為のボタン MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { wv.goBack(); } }); // Webページの JavaScript の呼び出し MainActivity.this.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { wv.loadUrl("javascript:getWebPageData()"); } }); // 必ず必要な JavaScript を有効にする設定 wv.getSettings().setJavaScriptEnabled(true); // 必ず必要な設定 wv.setWebViewClient(new WebViewClient(){ // 必ず必要な設定 : 常に WebView 内でページを表示する為 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i("lightbox", "shouldOverrideUrlLoading"+url); return super.shouldOverrideUrlLoading(view, url); } // オプション : 表示されたページの URL を変数にセット @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.i("lightbox", "onPageStarted:" + url); startPage = url; } // オプション : ページを表示し終わってから発生するイベント @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }); // 目的のページを表示する wv.loadUrl(initPage); } @Override protected void onStop() { super.onStop(); wv.clearHistory(); wv.clearCache(true); Log.i("lightbox", "onStop"); } }
拡張子:txtvbswsfjsphpjavahtmlutf8sjis package sample.lightbox.webbrowser; import android.util.Log; import android.webkit.JavascriptInterface; /** * Created by lightbox on 2015/09/24. */ public class JavaScriptAccess { // Webページからデータを取得するイベント用 public interface OnGetWebDataListener { abstract public void onWebGetDataListener( String textData ); } private OnGetWebDataListener ogwdl = null; public JavaScriptAccess( OnGetWebDataListener ogwdl ) { this.ogwdl = ogwdl; } // Webページ上の JavaScript から、Android Studio の logcat に表示します @JavascriptInterface public void logcat(String message) { Log.i("lightbox", message); } // コンストラクタで取得したインターフェイスのインスタンス内のメソッドを // 呼び出して、Webページから取得したデータを渡します @JavascriptInterface public void toAndroid(String message) { this.ogwdl.onWebGetDataListener(message); } }
package sample.lightbox.webbrowser; import android.util.Log; import android.webkit.JavascriptInterface; /** * Created by lightbox on 2015/09/24. */ public class JavaScriptAccess { // Webページからデータを取得するイベント用 public interface OnGetWebDataListener { abstract public void onWebGetDataListener( String textData ); } private OnGetWebDataListener ogwdl = null; public JavaScriptAccess( OnGetWebDataListener ogwdl ) { this.ogwdl = ogwdl; } // Webページ上の JavaScript から、Android Studio の logcat に表示します @JavascriptInterface public void logcat(String message) { Log.i("lightbox", message); } // コンストラクタで取得したインターフェイスのインスタンス内のメソッドを // 呼び出して、Webページから取得したデータを渡します @JavascriptInterface public void toAndroid(String message) { this.ogwdl.onWebGetDataListener(message); } }
001.php 拡張子:txtvbswsfjsphpjavahtmlutf8sjis <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> function getWebPageData() { androidObject.toAndroid("Ajax でサーバよりデータを取得して Android に渡す"); } </script> </head> <body> <pre> メニュー 1) <a href="002.php">入力</a> <img src="https://goo.gl/NoH5LR" style="border: solid 1px #000000"> <input type="button" value="logcat test" onclick="androidObject.logcat('OK')"> </pre> </body> </html>
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> function getWebPageData() { androidObject.toAndroid("Ajax でサーバよりデータを取得して Android に渡す"); } </script> </head> <body> <pre> メニュー 1) <a href="002.php">入力</a> <img src="https://goo.gl/NoH5LR" style="border: solid 1px #000000"> <input type="button" value="logcat test" onclick="androidObject.logcat('OK')"> </pre> </body> </html>
拡張子:txtvbswsfjsphpjavahtmlutf8sjis <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/action"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="戻る" android:id="@+id/button" android:layout_alignParentEnd="true" android:layout_weight="1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="JS 呼び出し" android:id="@+id/button2" android:layout_weight="1"/> </LinearLayout> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" android:layout_below="@+id/action" android:visibility="visible"/> </RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/action"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="戻る" android:id="@+id/button" android:layout_alignParentEnd="true" android:layout_weight="1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="JS 呼び出し" android:id="@+id/button2" android:layout_weight="1"/> </LinearLayout> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" android:layout_below="@+id/action" android:visibility="visible"/> </RelativeLayout>