こんにちは私はWebView
実装を使用してAndroidアプリケーションを開発しています。
Eclipseでプロジェクトをビルドするときにエラーが発生しませんが、アプリケーションを実行するときにエラーが発生します。
アプリケーションが予期せず動作を停止しました
Javaファイルは次のようになります:
public class WebViewSampleActivity extends Activity {
WebView wb;
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wb=(WebView)findViewById(R.id.webView1);
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setLoadWithOverviewMode(true);
wb.getSettings().setUseWideViewPort(true);
wb.getSettings().setBuiltInZoomControls(true);
wb.getSettings().setPluginState(WebSettings.PluginState.ON);
wb.getSettings().setPluginsEnabled(true);
wb.setWebViewClient(new HelloWebViewClient());
wb.loadUrl("http://www.examplefoo.com");
}
}
Xmlファイルは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:layout_gravity="center">
<WebView
Android:id="@+id/webView1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:layout_gravity="center" />
</LinearLayout>
マニフェストで<uses-sdk><uses-sdk/>
の後に次を使用します。
<uses-permission Android:name="Android.permission.INTERNET"/>
WebViewは、アプリにWebページを表示するために使用されていました。 WebViewを作成して任意のWebサイトをロードしましょう
AndroidManifest.XMLで権限を提供します
<uses-permission Android:name="Android.permission.INTERNET"/>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/webview"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
MainActivity.Java
import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.webkit.WebView;
public class MainActivity extends AppCompatActivity
{
private WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview=(WebView)findViewById(R.id.webview);
//loads androidride homepage to webview
webview.loadUrl("https://www.androidride.com");
}
}
WebViewは、アプリケーション内のWebページを表示するビューです。 HTML文字列を指定して、WebViewを使用してアプリケーション内に表示することもできます。
例を含むチュートリアル: http://www.viralandroid.com/2015/09/Android-webview-tutorial-with-examples.html
activity_main.xmlファイル
<WebView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/webView1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"/>
MainActivity.Javaファイル
import Android.webkit.WebView;
...
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.viralandroid.com");
class WebViewClass extends WebViewClient {
final ProgressBar loadProgress;
final WebView wv;
WebViewClass(WebView webView, ProgressBar progressBar) {
this.wv = webView;
this.loadProgress = progressBar;
}
public void onPageFinished(WebView view, String url) {
wv.setVisibility(View.VISIBLE);
loadProgress.setVisibility(View.INVISIBLE);
view.clearCache(true);
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
wv.loadData("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + "<center>" + getString(R.string.erroopsproblem) + ".</center>", "text/html", "UTF-8");
}
}
OnCreate()でこのクラスを次のように使用します
WebView wv = (WebView) findViewById(R.id.webview);
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.setScrollBarStyle(View.VISIBLE);
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setSupportZoom(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setAllowContentAccess(true);
wv.loadUrl(Dest);
wv.setVisibility(View.INVISIBLE);
wv.setWebViewClient(new WebViewClass(wv, loadProgress));
どうぞ:
LinearLayout root = new LinearLayout(this);
root.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
WebView wv = new WebView(this);
wv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://www.google.com");
root.addView(wv);
setContentView(root);
このコードをonCreate-Methodに配置します。また、パーミッションインターネットをAndroidマニフェストに設定することを忘れないでください。
@ghostの回答に加えて、Webビューをブラウザのように完全に機能させたい場合、つまり前後に移動できる場合は、以下のようにアクティビティのonBackPressedメソッドをオーバーライドする必要があります。
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
Xmlファイル
<WebView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/myweb"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"/>
Javaファイル
WebView web = (WebView) findViewById(R.id.myweb);
web.setWebViewClient(new WebViewClient());
web.getSettings().setLoadsImagesAutomatically(true);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setBuiltInZoomControls(true);
web.getSettings().setSupportZoom(true);
web.getSettings().setLoadWithOverviewMode(true);
web.getSettings().setUseWideViewPort(true);
web.getSettings().setAllowContentAccess(true);
web.loadUrl("https://www.technolifehacker.com");
web.setWebViewClient(new WebViewClient(){