把web网站封装成安卓APP的方式(就是套个壳?),省略了打开浏览器访问的这一步,虽然没什么用。。虽然不会安卓开发,但是总想什么都搞一搞,各种查网页和Ctrl/c|Ctrl/v,大半天功夫搞出来个样子了

准备工具

  1. Android Studio
  2. 可以在线访问的网站url
下载安装Android Studio 3.5.2版本 | 4.0.0版本 | (文件有点大 七八百兆)









汉化 下载地址:Github
  1. 下载后解压
  2. 复制jetbrains-in-chinese-2019.3\AndroidStudio\resources_zh_CN_AndroidStudio_3.5_r1.jar文件
  3. 粘贴Android\Android Studio\lib\目录下面
  4. 重启软件

新建一个项目




修改项目下AndroidStudioProjects\jc\build.gradle文件(默认的很慢的,修改成阿里云的镜像源),然后:文件>Sync Project with Gradle File,同步后会重新下载的
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}



修改项目下app\src\main\java\com\example\jc\MainActivity.java文件(就是使用webview组件实现打开网页)
package com.example.jc;

import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    private WebView webview;

    //其他
    //其他结束

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //其他
        //其他结束

        //实例化WebView对象
        webview = new WebView(this);

        //显示web视图
        setContentView(webview);

        //APP内打开链接
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // webView加载web资源
                view.loadUrl(url);
                return true;
            }
        });

        //自动加载图片
        webview.getSettings().setLoadsImagesAutomatically(true);
        webview.getSettings().setBuiltInZoomControls(true);

        //设置默认的字符编码
        webview.getSettings().setDefaultTextEncodingName("utf-8");

        //设置true,才能让Webivew支持<meta>标签的viewport属性
        webview.getSettings().setUseWideViewPort(true);

        //设置可以支持缩放
        webview.getSettings().setSupportZoom(true);

        //设置出现缩放工具
        webview.getSettings().setBuiltInZoomControls(true);

        //设定缩放控件隐藏
        webview.getSettings().setDisplayZoomControls(false);

        //自动播放音乐
        webview.getSettings().setMediaPlaybackRequiresUserGesture(false);

        //启用或禁用DOM缓存
        webview.getSettings().setDomStorageEnabled(true);

        //允许https网页中加载http
        //webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }

        //设置WebView属性,能够执行Javascript脚本
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        //加载需要显示的网页
        webview.loadUrl("https://me.jinchuang.org");//显示远程网页

    }

    //返回功能
    private long firstTime = 0;
    @Override
    // 设置webview返回上一页,返回到首页后再按一次退出APP
    // 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        long secondTime = System.currentTimeMillis();
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
            webview.goBack(); // goBack()表示返回WebView的上一页面
            return true;
        }
        else if (secondTime - firstTime > 2000) {
            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
            firstTime = secondTime;
            return true;
        }
        else {
            System.exit(0);
        }
        return super.onKeyDown(keyCode, event);
    }


    //防止内存泄漏
    @Override
    protected void onDestroy() {
        if (webview != null) {
            webview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
            webview.clearHistory();
            ((ViewGroup) webview.getParent()).removeView(webview);
            webview.destroy();
            webview = null;
        }
        super.onDestroy();
    }

}
允许连网,修改项目下app\src\main\AndroidManifest.xml文件
# 开启硬件加速 支持视频播放
    android:hardwareAccelerated="true"

# 开启明文传输http
    android:usesCleartextTraffic="true"

# 应用连网权限
    <uses-permission android:name="android.permission.INTERNET" />


修改APP名称,修改项目下app\src\main\res\values\strings.xml文件


修改导航栏背景色,去掉顶部标题栏,修改项目下:
app\src\main\res\values\colors.xml文件
app\src\main\res\values\style.xml文件
# colors.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <color name="colorPrimary">#000000</color>
    <color name="colorPrimaryDark">#009fd9</color>
    <color name="colorAccent">#D81B60</color>
</resources>

# style.xml

<resources>

<!-- Base application theme. -->

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

</resources>


配置AVD手机模拟器,测试app使用







运行测试app,模拟器查看效果




内容转载自靳闯博客