package com.openfarmanager.android; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import static com.openfarmanager.android.utils.Extensions.getResourceId; public class Help extends Activity { private static final String ASSET = "file:///android_asset/"; private WebView mWebview; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.help); mWebview = (WebView) findViewById(R.id.help_web_view); mWebview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith(ASSET + "far_help/")) { int resourceId = getResourceId("raw", url.substring((ASSET + "far_help/").length())); if (resourceId != 0) { mWebview.loadDataWithBaseURL(ASSET, readTextFromResource(resourceId), "text/html", "utf-8", null); } return true; } return super.shouldOverrideUrlLoading(view, url); } }); mWebview.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_HOME: case KeyEvent.KEYCODE_MOVE_HOME: mWebview.loadDataWithBaseURL(ASSET, readTextFromResource(R.raw.help), "text/html", "utf-8", null); return true; case KeyEvent.KEYCODE_ESCAPE: finish(); return true; } return false; } }); mWebview.loadDataWithBaseURL(ASSET, readTextFromResource(R.raw.help), "text/html", "utf-8", null); } private String readTextFromResource(int resourceID) { InputStream raw = getResources().openRawResource(resourceID); BufferedReader br = new BufferedReader(new InputStreamReader(raw)); StringBuilder builder = new StringBuilder(); String line; try { while ((line = br.readLine()) != null) { builder.append(line); } raw.close(); } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } }