アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
AndroidアプリとWebアプリの連携
WebViewを使ってアプリ内ウェブサイトを埋め込み、サイト(HTML,JavaScriptなど)とネイティブアプリ(Java)との連携する方法を紹介します。
ここではJavaScriptでの連携とサイトURL取得での連携の2つ例を書きます。
ここではJavaScriptでの連携とサイトURL取得での連携の2つ例を書きます。
- JavaとJavaScriptの連携
WebViewのaddJavascriptInterfaceを使ってJavaScriptから使用できるオブジェクトを生成することができます。
- サイトのページ遷移URLを取得して連携する
この場合はWebViewClientのonPageStarted、onPageFinishedなどを使います。
動作の流れはウェブサイトが(例えば、リンクを押されたときに)次のページ切り替えるときにURLをアプリ側でチェックして処理を加えます。
以下のサンプルはGoogleのトップページから検索するとページを止めてURLクエリーを取得してダイアログを表示させます。
以上!
WebViewのaddJavascriptInterfaceを使ってJavaScriptから使用できるオブジェクトを生成することができます。
<!-- サンプルサイト webview.html -->
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<body>
<br />
<br />
<br />
<div>
<button onclick="android.getToast()">Show!</button>
</div>
</html>
// MainActivity.java
public class MainActivity extends Activity {
private WebView webview;
private final static String SHOW_URL = "http://www.sample.com/webview.html";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setVerticalScrollbarOverlay(true);
webview.loadUrl(SHOW_URL);
webview.addJavascriptInterface(new JsObject(this), "android");
}
public class JsObject {
private Context mContext;
public JsObject(Context context) {
this.mContext = context;
}
public void getToast() {
Toast.makeText(mContext,
"Show from JAVA", Toast.LENGTH_LONG).show();
}
}
}
- サイトのページ遷移URLを取得して連携する
この場合はWebViewClientのonPageStarted、onPageFinishedなどを使います。
動作の流れはウェブサイトが(例えば、リンクを押されたときに)次のページ切り替えるときにURLをアプリ側でチェックして処理を加えます。
以下のサンプルはGoogleのトップページから検索するとページを止めてURLクエリーを取得してダイアログを表示させます。
// MainActivity.java
public class MainActivity extends Activity {
private WebView webview;
private final static String SHOW_URL = "http://www.google.co.jp/";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setVerticalScrollbarOverlay(true);
webview.loadUrl(SHOW_URL);
webview.setWebViewClient(webClient);
}
private WebViewClient webClient = new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (url.equals(SHOW_URL)) {
} else {
String queryStr = url.substring(
SHOW_URL.length(), url.length());
webview.stopLoading();
showDialog(Uri.decode(queryStr));
}
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
};
private void showDialog(String msg) {
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("クエリー")
.setMessage(msg)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which){
}
})
.setCancelable(true)
.create().show();
}
}
以上!
COMMENT