| package com.android.hotspot2.osu; |
| |
| import android.annotation.Nullable; |
| import android.app.Activity; |
| import android.graphics.Bitmap; |
| import android.net.ConnectivityManager; |
| import android.net.Network; |
| import android.net.http.SslError; |
| import android.os.Bundle; |
| import android.util.Log; |
| import android.util.TypedValue; |
| import android.webkit.SslErrorHandler; |
| import android.webkit.WebSettings; |
| import android.webkit.WebView; |
| import android.webkit.WebViewClient; |
| |
| import com.android.hotspot2.R; |
| |
| public class OSUWebView extends Activity { |
| public static final String OSU_URL = "com.android.hotspot2.osu.URL"; |
| public static final String OSU_NETWORK = "com.android.hotspot2.osu.NETWORK"; |
| |
| private String mUrl; |
| |
| @Override |
| protected void onCreate(@Nullable Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| Log.d(OSUManager.TAG, "Opening OSU Web View"); |
| |
| ConnectivityManager connectivityManager = ConnectivityManager.from(this); |
| |
| mUrl = getIntent().getStringExtra(OSU_URL); |
| Network network = getIntent().getParcelableExtra(OSU_NETWORK); |
| connectivityManager.bindProcessToNetwork(network); |
| |
| getActionBar().setDisplayShowHomeEnabled(false); |
| setContentView(R.layout.osu_web_view); |
| getActionBar().setDisplayShowHomeEnabled(false); |
| |
| final WebView myWebView = findViewById(R.id.webview); |
| myWebView.clearCache(true); |
| WebSettings webSettings = myWebView.getSettings(); |
| webSettings.setJavaScriptEnabled(true); |
| MyWebViewClient mWebViewClient = new MyWebViewClient(); |
| myWebView.setWebViewClient(mWebViewClient); |
| Log.d(OSUManager.TAG, "OSU Web View to " + mUrl); |
| myWebView.loadUrl(mUrl); |
| Log.d(OSUManager.TAG, "OSU Web View loading"); |
| //myWebView.setWebChromeClient(new MyWebChromeClient()); |
| // Start initial page load so WebView finishes loading proxy settings. |
| // Actual load of mUrl is initiated by MyWebViewClient. |
| //myWebView.loadData("", "text/html", null); |
| } |
| |
| private class MyWebViewClient extends WebViewClient { |
| private static final String INTERNAL_ASSETS = "file:///android_asset/"; |
| // How many Android device-independent-pixels per scaled-pixel |
| // dp/sp = (px/sp) / (px/dp) = (1/sp) / (1/dp) |
| private final float mDpPerSp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 1, |
| getResources().getDisplayMetrics()) / |
| TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, |
| getResources().getDisplayMetrics()); |
| private int mPagesLoaded; |
| |
| // If we haven't finished cleaning up the history, don't allow going back. |
| public boolean allowBack() { |
| return mPagesLoaded > 1; |
| } |
| |
| // Convert Android device-independent-pixels (dp) to HTML size. |
| private String dp(int dp) { |
| // HTML px's are scaled just like dp's, so just add "px" suffix. |
| return Integer.toString(dp) + "px"; |
| } |
| |
| // Convert Android scaled-pixels (sp) to HTML size. |
| private String sp(int sp) { |
| // Convert sp to dp's. |
| float dp = sp * mDpPerSp; |
| // Apply a scale factor to make things look right. |
| dp *= 1.3; |
| // Convert dp's to HTML size. |
| return dp((int)dp); |
| } |
| |
| @Override |
| public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { |
| Log.d(OSUManager.TAG, "TLS error in Web View: " + error); |
| } |
| } |
| } |