公司有這個需求生成一個webapp應(yīng)用。前面一直在使用web與Android混合開發(fā),越是后面你就發(fā)現(xiàn)越有意思。hbuildX官網(wǎng)不怎么維護,雖然一直說這是潮流,uni-app開發(fā)也挺火的,但是安卓開發(fā)特別是適配不同的手機型號,真的是頭大。
這是一個適用于Android Studio的模板項目,可讓你在幾分鐘內(nèi)創(chuàng)建一個android webview應(yīng)用程序。你可以使用它為您的網(wǎng)站創(chuàng)建一個簡單的應(yīng)用程序,或作為基于 HTML5 的 android 應(yīng)用程序的起點。
就拿百度的連接來說吧。這個是mainActivity的一個代碼。以代碼注釋的一種方式就行了。
public class MainActivity extends Activity {
//private WebView mWebView;
private static final String TAG = MainActivity.class.getSimpleName();
WebView webview;
String url = "https://www.baidu.com/"; //云端,把這個連接就行一個替換成你得就行了。
@Override
@SuppressLint({"SetJavaScriptEnabled", "MissingInflatedId"})
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.activity_main_webview);
webview.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
Log.e("tag"," SslError="+error);
//證書信任
handler.proceed();
}
});
setUpWebViewDefaults(webview);
WebSettings settings = webview.getSettings();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
//支持js
settings.setJavaScriptEnabled(true);
settings.setUserAgentString("Mozilla/5.0 (android; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36");
//settings.setUserAgentString("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36");
//自適應(yīng)屏幕
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
//自動縮放
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDomStorageEnabled(true);
settings.setBlockNetworkImage(false);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
//支持獲取手勢焦點
webview.requestFocusFromTouch();
// REMOTE RESOURCE
//mWebView.loadUrl("https://github.com/");
//mWebView.loadUrl(url);
webview.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onConsoleMessage(ConsoleMessage cm) { //在Logcat中顯示瀏覽器的控制臺輸出
Log.d("MyApplication", cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
//解決打不開webrtc攝像頭的問題;有一點十分重要需要手動在安卓權(quán)限中允許攝像頭權(quán)限
public void onPermissionRequest(final PermissionRequest request) {
request.grant(request.getResources());
}
});
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url); // 根據(jù)傳入的參數(shù)再去加載新的網(wǎng)頁
return true; // 表示當前WebView可以處理打開新網(wǎng)頁的請求,不用借助系統(tǒng)瀏覽器
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:function ganen(){ document.getElementsByTagName('meta')['viewport'].content='width=1000px,initial-scale=0.5,minimum-scale=0.2;'}");
view.loadUrl("javascript:ganen();");
}
});
webview.setWebViewClient(new WebViewClient() { //解決https 不安全的顯示問題
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// super.onReceivedSslError(view, handler, error);
//handler.cancel();// super中默認的處理方式,WebView變成空白頁
if (handler != null) {
handler.proceed();//忽略證書
}
}
});
webview.getSettings().setMediaPlaybackRequiresUserGesture(false); //讓攝像頭自動播放
webview.loadUrl(url);
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onPermissionRequest(final PermissionRequest request) {
Log.d(TAG, "onPermissionRequest");
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if(request.getOrigin().toString().equals(url)) {
request.grant(request.getResources());
} else {
request.deny();
}
}
});
}
});
//mWebView.loadUrl("https://www.cncwww.cn:9944/call.html");
// LOCAL RESOURCE
// mWebView.loadUrl("file:///android_asset/index.html");
}
@Override
public void onBackPressed() {
if(webview.canGoBack()) {
webview.goBack();
} else {
super.onBackPressed();
}
}
/**
* Convenience method to set some generic defaults for a
* given WebView
*
* @param webView
*/
private void setUpWebViewDefaults(WebView webView) {
WebSettings settings = webView.getSettings();
// Enable Javascript
settings.setJavaScriptEnabled(true);
// Use WideViewport and Zoom out if there is no viewport defined
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
// Enable pinch to zoom without the zoom buttons
settings.setBuiltInZoomControls(true);
// Allow use of Local Storage
settings.setDomStorageEnabled(true);
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
// Hide the zoom controls for HONEYCOMB+
settings.setDisplayZoomControls(false);
}
// Enable remote debugging via chrome://inspect
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
webView.setWebViewClient(new WebViewClient());
// AppRTC requires third party cookies to work
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptThirdPartyCookies(webview, true);
}
}
然后按照步驟進行一個打包,就行了。
注意:這里需要keystore文件才能打包,我是用jdK1.8生成的。然后已經(jīng)放項目里面了。
關(guān)于:test.keystore文章來源:http://www.zghlxwxcb.cn/news/detail-736030.html
key store password: test123
key alias: test
key password: test123
把這個地址連接換成你的即可。
缺點:
還沒有做一個開屏動畫,因為我沒有一個素材,打開的,白屏?xí)悬c久。后面找時間研究一下。
github地址:https://github.com/wskang12138/webapp文章來源地址http://www.zghlxwxcb.cn/news/detail-736030.html
到了這里,關(guān)于使用android studio將網(wǎng)站打包成apk(可以直接使用替換為自己的網(wǎng)站連接即可)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!