文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用android studio将网站打包成apk(可以直接使用替换为自己的网站连接即可)

2023-09-26 11:30

关注

公司有这个需求生成一个webapp应用。前面一直在使用web与Android混合开发,越是后面你就发现越有意思。hbuildX官网不怎么维护,虽然一直说这是潮流,uni-app开发也挺火的,但是安卓开发特别是适配不同的手机型号,真的是头大。

这是一个适用于Android Studio的模板项目,可让你在几分钟内创建一个android webview应用程序。你可以使用它为您的网站创建一个简单的应用程序,或作为基于 HTML5 的 android 应用程序的起点。

就拿百度的连接来说吧。这个是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");//自适应屏幕        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摄像头的问题;有一点十分重要需要手动在安卓权限中允许摄像头权限            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); // 根据传入的参数再去加载新的网页                return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器            }            @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();        }    }        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生成的。然后已经放项目里面了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于:test.keystore

key store password: test123key alias: testkey password: test123

把这个地址连接换成你的即可。
在这里插入图片描述
缺点:
还没有做一个开屏动画,因为我没有一个素材,打开的,白屏会有点久。后面找时间研究一下。
github地址:https://github.com/wskang12138/webapp

来源地址:https://blog.csdn.net/nihaio25/article/details/131532027

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯