From d7f5ca177678e6c1f23cac21ec2f87593f3a0162 Mon Sep 17 00:00:00 2001 From: zhaodengke Date: Fri, 7 Mar 2025 11:40:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9D=83=E5=92=8C=E5=8E=82=E5=95=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B0=E8=84=9A=E6=9C=AC=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++- app/build.gradle | 13 ++++++- .../java/com/nsgk/ruralWeb/Constants.java | 20 ++++++++++ .../com/nsgk/ruralWeb/FullscreenActivity.java | 39 ++++++++++++++++++- .../java/com/nsgk/ruralWeb/Preference.java | 37 ++++++++++++++++++ .../com/nsgk/ruralWeb/WelcomeActivity.java | 27 +++++++++++++ app/src/main/res/layout/activity_welcome.xml | 2 + gradle.properties | 10 +++-- 打包-正式.bat | 33 ++++++++++++---- 9 files changed, 172 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/nsgk/ruralWeb/Preference.java diff --git a/README.md b/README.md index f48ffd6..48e2236 100644 --- a/README.md +++ b/README.md @@ -23,17 +23,19 @@ * 配置```appName=```App桌面快捷方式名称, 可以直接使用字符串(需要加双引号, 如 "NSGK APP"), 也可以使用国际化字符串配置(不要加双引号, 如 @string/app_name) * 配置```appIconKey=```图标名称, 不要加双引号, 去掉前后缀(如 yhzl, 图标为ic_launcher_yhzl; 圆角图标为ic_launcher_yhzl_round) * 使用Android Studio生成签名包 +* 配置```appCopyright=```启动页版权文本, 不要加双引号 +* 配置```appVendor=```启动页厂商名称, 不要加双引号 * 生成的apk路径为 `/app/release/app-release.apk` > 使用`gradle`脚本打签名的正式包 * 执行 ```gradlew assembleRelease``` 将使用`gradle.properties`文件里的配置进行打包 -* 如果需要自定义配置(无需修改`gradle.properties`文件), 执行 ```gradlew assembleRelease -PappHomeUrl="首页地址" -PappName="App桌面快捷方式名称(只能使用字符串)" -PappIconKey="图标名称"``` 将使用命令行里的配置进行打包 +* 如果需要自定义配置(无需修改`gradle.properties`文件), 执行 ```gradlew assembleRelease -PappHomeUrl="首页地址" -PappName="App桌面快捷方式名称(只能使用字符串)" -PappIconKey="图标名称" -PappIconKey="启动页版权文本" -PappCopyright="启动页厂商名称"``` 将使用命令行里的配置进行打包 * 生成的apk路径为 `/app/build/outputs/apk/release/app-release.apk` > 帮助脚本 -* `打包-正式.bat`: 构建正式包(直接执行将使用`gradle.properties`文件里的配置进行打包, 完整命令行用法为 ```.\打包-正式.bat App主页链接地址 App名称 App图标```, 此时会使用命令行里的配置进行打包. 生成的路径为`/app/build/outputs/apk/release/app-release.apk`) +* `打包-正式.bat`: 构建正式包(直接执行将使用`gradle.properties`文件里的配置进行打包, 完整命令行用法为 ```.\打包-正式.bat App主页链接地址 App名称 App图标 App启动页版权文本 App启动页厂商名称```, 此时会使用命令行里的配置进行打包. 生成的路径为`/app/build/outputs/apk/release/app-release.apk`) * `打包-debug.bat`: 构建Debug包(生成的路径为`/app/build/outputs/apk/debug/app-debug.apk`) * `安装-发布包.bat`: 将已打好的Release包安装至手机(手机需连接到电脑, 并且启用开发者模式) * `安装-调试包.bat`: 将已打好的Debug包安装至手机(手机需连接到电脑, 并且启用开发者模式) diff --git a/app/build.gradle b/app/build.gradle index e45ceb1..cdfbf9a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,6 +17,11 @@ android { // App首页链接地址 buildConfigField "String", "APP_HOME_URL", "\"${project.properties.appHomeUrl}\"" + // App启动页版权文本 + buildConfigField "String", "APP_COMPYRIGHT", "\"${project.properties.appCopyright}\"" + // App启动页厂商名称 + buildConfigField "String", "APP_VENDOR", "\"${project.properties.appVendor}\"" + // AndroidManifest.xml占位符 manifestPlaceholders = [ // App名称 @@ -44,11 +49,15 @@ android { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release - //resValue("string", "app_custom_name", "\"${project.properties.appName}\"") + resValue("string", "app_home_url", "\"${project.properties.appHomeUrl}\"") + resValue("string", "app_copyright", "\"${project.properties.appCopyright}\"") + resValue("string", "app_vendor", "\"${project.properties.appVendor}\"") } debug { signingConfig signingConfigs.release - //resValue("string", "app_custom_name", "\"${project.properties.appName}\"") + resValue("string", "app_home_url", "\"${project.properties.appHomeUrl}\"") + resValue("string", "app_copyright", "\"${project.properties.appCopyright}\"") + resValue("string", "app_vendor", "\"${project.properties.appVendor}\"") } } compileOptions { diff --git a/app/src/main/java/com/nsgk/ruralWeb/Constants.java b/app/src/main/java/com/nsgk/ruralWeb/Constants.java index 9aa8e3a..d531f3e 100644 --- a/app/src/main/java/com/nsgk/ruralWeb/Constants.java +++ b/app/src/main/java/com/nsgk/ruralWeb/Constants.java @@ -11,4 +11,24 @@ public class Constants { return BuildConfig.APP_HOME_URL; } + + /** + * App启动页版权文本 + * 可以在 /gradle.properties 里配置 appCopyright=文本, 不要携带双引号 + * 也可以在命令行添加 -PappCopyright="文本", 双引号可携带也可不携带 + */ + public static String AppCopyright() + { + return BuildConfig.APP_COMPYRIGHT; + } + + /** + * App启动页厂商文本 + * 可以在 /gradle.properties 里配置 appVendor=文本, 不要携带双引号 + * 也可以在命令行添加 -PappVendor="文本", 双引号可携带也可不携带 + */ + public static String AppVendor() + { + return BuildConfig.APP_VENDOR; + } } diff --git a/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java b/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java index c6999d0..4cf5e29 100644 --- a/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java +++ b/app/src/main/java/com/nsgk/ruralWeb/FullscreenActivity.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.ViewGroup; +import android.webkit.WebView; import android.widget.LinearLayout; import android.widget.RelativeLayout; @@ -24,6 +25,7 @@ public class FullscreenActivity extends AppCompatActivity { private AgentWeb mAgentWeb; + private Preference preference; @SuppressLint("SetJavaScriptEnabled") @Override @@ -31,12 +33,23 @@ public class FullscreenActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fullscreen); - String appHomeUrl = Constants.AppHomeUrl(); + String appHomeUrl = GetHomeUrl(); Log.i("NSGK", "App home url: " + appHomeUrl); // init(); mAgentWeb = AgentWeb.with(this)// .setAgentWebParent((RelativeLayout) findViewById(R.id.ll), -1, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))//传入AgentWeb的父控件。 .useDefaultIndicator(-1, 3)//设置进度条颜色与高度,-1为默认值,高度为2,单位为dp。 +/* .setWebChromeClient(new WebChromeClient() { + @Override + public void onProgressChanged(WebView view, int newProgress) + { + super.onProgressChanged(view, newProgress); + if(newProgress == 100) + { + GetPreference().SetString(Preference.LAST_ACCESS_URL, view.getUrl()); + } + } + })*/ .setWebViewClient(new com.just.agentweb.WebViewClient() { })//WebViewClient , 与 WebView 使用一致 ,但是请勿获取WebView调用setWebViewClient(xx)方法了,会覆盖AgentWeb DefaultWebClient,同时相应的中间件也会失效。 @@ -99,4 +112,28 @@ public class FullscreenActivity extends AppCompatActivity { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); } + + private Preference GetPreference() + { + if(null == preference) + preference = new Preference(this); + return preference; + } + + private String GetHomeUrl() + { + return Constants.AppHomeUrl(); + // return GetPreference().GetString(GetPreference().LAST_ACCESS_URL, Constants.AppHomeUrl()); + } + + private void DumpLastUrl() + { + if(null == mAgentWeb) + return; + WebView webView = mAgentWeb.getWebCreator().getWebView(); + if(null == webView) + return; + String url = webView.getUrl(); + GetPreference().SetString(Preference.LAST_ACCESS_URL, url); + } } \ No newline at end of file diff --git a/app/src/main/java/com/nsgk/ruralWeb/Preference.java b/app/src/main/java/com/nsgk/ruralWeb/Preference.java new file mode 100644 index 0000000..45b48ff --- /dev/null +++ b/app/src/main/java/com/nsgk/ruralWeb/Preference.java @@ -0,0 +1,37 @@ +package com.nsgk.ruralWeb; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +public final class Preference +{ + public static final String LAST_ACCESS_URL = "last_access_url"; + + private final Context context; + + public Preference(Context context) + { + this.context = context; + } + + private SharedPreferences Read() + { + return PreferenceManager.getDefaultSharedPreferences(context); + } + + private SharedPreferences.Editor Write() + { + return PreferenceManager.getDefaultSharedPreferences(context).edit(); + } + + public String GetString(String name, String...def) + { + return Read().getString(name, null != def && def.length > 0 ? def[0] : null); + } + + public void SetString(String name, String val) + { + Write().putString(name, val).commit(); + } +} diff --git a/app/src/main/java/com/nsgk/ruralWeb/WelcomeActivity.java b/app/src/main/java/com/nsgk/ruralWeb/WelcomeActivity.java index de561e9..19daef0 100644 --- a/app/src/main/java/com/nsgk/ruralWeb/WelcomeActivity.java +++ b/app/src/main/java/com/nsgk/ruralWeb/WelcomeActivity.java @@ -9,6 +9,7 @@ import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; @@ -36,12 +37,38 @@ public class WelcomeActivity extends AppCompatActivity { } }; + private String GetTrimString(String str) + { + if(null == str || str.isEmpty()) + return null; + str = str.trim(); + if(str.isEmpty()) + return null; + return str; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_welcome); imageView = findViewById(R.id.imageView); llcenter = findViewById(R.id.llcenter); + + // 动态设置启动页版权信息 + String text = GetTrimString(Constants.AppCopyright()); + if(null != text) + { + TextView copyrightText = findViewById(R.id.welcome_text_copyright); + copyrightText.setText(text); + } + // 动态设置启动页厂商名称 + text = GetTrimString(Constants.AppVendor()); + if(null != text) + { + TextView vendorText = findViewById(R.id.welcome_text_vendor); + vendorText.setText(text); + } + Animation animation = AnimationUtils.loadAnimation(this, R.anim.img_anim); animation.start(); handler.sendEmptyMessageDelayed(1, 1000); diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/activity_welcome.xml index 5241f7d..cd07a83 100644 --- a/app/src/main/res/layout/activity_welcome.xml +++ b/app/src/main/res/layout/activity_welcome.xml @@ -32,6 +32,7 @@ android:layout_marginBottom="8dp">