[Android]WebViewを使ったアプリ作成その2

WebViewを使ったアプリ作成その1を少し改良します。

Javascriptを使う。

これをいれておかないと HTML5 と CSSでアプリは作れません [worried] ただし,Javascriptを有効にすると,XSSなどセキュリティの脆弱性があると警告文がでてきます.

Using setJavaScriptEnabled can introduce XSS vulnerabilities into you application, review carefully.

実験ということで,当面,@SuppressLint(“SetJavaScriptEnabled“)で警告文を出さないようにします.当然アプリを公開するときには十分注意しないといけません.

package com.example.mywebview;

import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.view.Menu; import android.webkit.WebView; import android.webkit.WebViewClient;

public class MainActivity extends Activity {

	@SuppressLint("SetJavaScriptEnabled")
	@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
     //レイアウトで指定したWebViewのIDを指定する。
       WebView  myWebView = (WebView)findViewById(R.id.webView1);
       //リンクをタップしたときに標準ブラウザを起動させない
       myWebView.setWebViewClient(new WebViewClient());
       //最初にYahoo! Japanのページを表示する。
       myWebView.loadUrl("http://www.yahoo.co.jp/");
     //jacascriptを許可する
       myWebView.getSettings().setJavaScriptEnabled(true);
   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.activity_main, menu);
       return true;
   }

} }}

Yahoo! Japanのページで、Javascriptの警告文は出なくなったと思います。 webview21.jpg

横のスクロールバーの隙間をなくす

Android2.3などで、右側のスクロールバーの隙間をなくす。 webview22.jpg

myWebView.setVerticalScrollbarOverlay(true); }}

タイトルバーを消す

setContentView(R.layout.activity_main);の前に

webview23.jpg

       super.onCreate(savedInstanceState);
       //タイトルバーを削除する
       requestWindowFeature(Window.FEATURE_NO_TITLE);
       setContentView(R.layout.activity_main);

importに以下を追加する.

import android.view.Window;

 

backキーを押したときにアプリを終了させない

このままですと、backキーを押すとアプリは終了してしまいます。

   //バックキーが押されたもアプリを終了しない
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
   	if (keyCode == KeyEvent.KEYCODE_BACK) {
           WebView webView =(WebView)findViewById(R.id.webView1);
           webView.goBack();
           return true;
       }
       return super.onKeyDown(keyCode, event);
   }

import に以下を追加する.

import android.view.KeyEvent;

アプリ名の変更

[value/strings.xml]を開く

app_name のValueを適当なアプリ名「例)簡易ブラウザ」に変更する.