买家信用
卖家信用
记录0
日志0
相册0
听众0
收听0
精华3
阅读权限10
在线时间4 小时
注册时间2026-7-18
最后登录2026-8-4
幼儿园
- UID
- 144
- 主题
- 7
- 回帖
- 0
金币- 0 枚
银币- 23 枚
铜币- 27 枚
下载币- 48 枚
- 在线时间
- 4 小时

  
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?免费注册
×
- -- ========== 导入包 ==========
- require "import"
- import "android.app.*"
- import "android.os.*"
- import "android.widget.*"
- import "android.view.*"
- import "android.app.Dialog"
- import "android.widget.LinearLayout"
- import "android.widget.TextView"
- import "android.widget.Button"
- import "android.widget.ScrollView"
- import "android.view.Gravity"
- import "android.graphics.drawable.GradientDrawable"
- import "android.graphics.Typeface"
- import "android.os.Build"
- import "android.view.View"
- import "android.content.Intent"
- import "android.net.Uri"
- -- ========== 获取当前版本 ==========
- function getCurrentVersion()
- local pkgInfo = activity.getPackageManager().getPackageInfo(activity.getPackageName(), 0)
- return pkgInfo.versionName
- end
- -- ========== 版本号比较 ==========
- function compareVersion(v1, v2)
- local function split(v)
- local t = {}
- for s in string.gmatch(v, "([^%.]+)") do
- table.insert(t, tonumber(s) or 0)
- end
- return t
- end
- local a, b = split(v1), split(v2)
- for i = 1, math.max(#a, #b) do
- local x = a[i] or 0
- local y = b[i] or 0
- if x > y then return 1
- elseif x < y then return -1 end
- end
- return 0
- end
- function makeRoundBg(color, radius)
- local g = GradientDrawable()
- g.setColor(color)
- g.setCornerRadius(radius)
- return g
- end
- function showUpdateDialog(version, changelog, downloadUrl, callback)
- local root = LinearLayout(activity)
- root.setOrientation(LinearLayout.VERTICAL)
- root.setGravity(Gravity.CENTER)
- root.setPadding(30, 30, 30, 30)
- root.setBackgroundColor(0x00000000)
- local card = LinearLayout(activity)
- card.setOrientation(LinearLayout.VERTICAL)
- card.setPadding(45, 35, 45, 30)
- local cardBg = makeRoundBg(0xFFFFFFFF, 32)
- card.setBackgroundDrawable(cardBg)
- if Build.VERSION.SDK_INT >= 21 then
- pcall(function()
- card.setElevation(card, 16)
- card.setTranslationZ(card, 8)
- end)
- end
- root.addView(card, LinearLayout.LayoutParams(-1, -2))
- -- 顶部装饰条
- local topBar = View(activity)
- local barBg = GradientDrawable()
- barBg.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
- barBg.setColors({0xFF1677FF, 0xFF69C0FF})
- barBg.setCornerRadius(16)
- topBar.setBackgroundDrawable(barBg)
- card.addView(topBar, LinearLayout.LayoutParams(-1, 8))
- -- 图标
- local iconLayout = LinearLayout(activity)
- iconLayout.setGravity(Gravity.CENTER)
- iconLayout.setPadding(0, 20, 0, 10)
- local iconBg = GradientDrawable()
- iconBg.setShape(GradientDrawable.OVAL)
- iconBg.setColors({0xFF1677FF, 0xFF69C0FF})
- iconBg.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM)
- iconBg.setSize(80, 80)
- local icon = TextView(activity)
- icon.setBackgroundDrawable(iconBg)
- icon.setText("🎉")
- icon.setTextSize(40)
- icon.setGravity(Gravity.CENTER)
- icon.setTextColor(0xFFFFFFFF)
- icon.setPadding(0, 8, 0, 0)
- iconLayout.addView(icon)
- card.addView(iconLayout)
- -- 标题
- local title = TextView(activity)
- title.setText("发现新版本")
- title.setTextSize(26)
- title.setTextColor(0xFF1677FF)
- title.setGravity(Gravity.CENTER)
- title.setTypeface(Typeface.DEFAULT_BOLD)
- title.setPadding(0, 2, 0, 0)
- card.addView(title)
- -- 版本号
- local versionText = TextView(activity)
- versionText.setText("v" .. version)
- versionText.setTextSize(20)
- versionText.setTextColor(0xFF1677FF)
- versionText.setGravity(Gravity.CENTER)
- versionText.setTypeface(Typeface.DEFAULT_BOLD)
- versionText.setPadding(0, 0, 0, 18)
- card.addView(versionText)
- local density = activity.getResources().getDisplayMetrics().density
- local maxHeightPx = math.floor(200 * density)
- local scroll = ScrollView(activity)
- scroll.setPadding(0, 0, 0, 0)
- scroll.setLayoutParams(LinearLayout.LayoutParams(-1, -2))
- local contentBg = makeRoundBg(0xFFF0F6FF, 16)
- local content = TextView(activity)
- if type(changelog) == "table" then
- changelog = table.concat(changelog, "\n")
- end
- content.setText(changelog or "优化体验,修复已知问题")
- content.setTextSize(15)
- content.setTextColor(0xFF333333)
- content.setPadding(24, 20, 24, 20)
- content.setLineSpacing(0, 1.6)
- content.setBackgroundDrawable(contentBg)
- scroll.addView(content)
- card.addView(scroll, LinearLayout.LayoutParams(-1, -2))
- -- 按钮行
- local btnLayout = LinearLayout(activity)
- btnLayout.setOrientation(LinearLayout.HORIZONTAL)
- btnLayout.setGravity(Gravity.CENTER)
- btnLayout.setPadding(0, 25, 0, 0)
- local cancelBtn = Button(activity)
- cancelBtn.setText("稍后")
- cancelBtn.setTextColor(0xFF999999)
- cancelBtn.setTextSize(16)
- local cancelBg = makeRoundBg(0x00000000, 28)
- cancelBg.setStroke(2, 0xFFDDDDDD)
- cancelBtn.setBackgroundDrawable(cancelBg)
- cancelBtn.setPadding(20, 12, 20, 12)
- btnLayout.addView(cancelBtn, LinearLayout.LayoutParams(0, -2, 1))
- local space = View(activity)
- btnLayout.addView(space, LinearLayout.LayoutParams(15, 1))
- local updateBtn = Button(activity)
- updateBtn.setText("立即更新")
- updateBtn.setTextColor(0xFFFFFFFF)
- updateBtn.setTextSize(16)
- updateBtn.setTypeface(Typeface.DEFAULT_BOLD)
- local updateBg = GradientDrawable()
- updateBg.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
- updateBg.setColors({0xFF1677FF, 0xFF4096FF})
- updateBg.setCornerRadius(28)
- updateBtn.setBackgroundDrawable(updateBg)
- updateBtn.setPadding(20, 12, 20, 12)
- btnLayout.addView(updateBtn, LinearLayout.LayoutParams(0, -2, 1))
- card.addView(btnLayout)
- -- 底部提示
- local footer = TextView(activity)
- footer.setText("建议 Wi-Fi 环境下下载")
- footer.setTextSize(12)
- footer.setTextColor(0xFFCCCCCC)
- footer.setGravity(Gravity.CENTER)
- footer.setPadding(0, 16, 0, 0)
- card.addView(footer)
- -- 构建对话框
- local dialog = Dialog(activity)
- dialog.setContentView(root)
- dialog.setCancelable(false)
- local window = dialog.getWindow()
- if window then
- local params = window.getAttributes()
- params.width = math.floor(activity.getWidth() * 0.88)
- params.height = LinearLayout.LayoutParams.WRAP_CONTENT
- window.setAttributes(params)
- window.setBackgroundDrawableResource(android.R.color.transparent)
- end
- cancelBtn.setOnClickListener(function()
- dialog.dismiss()
- if callback and callback.onCancel then callback.onCancel() end
- end)
- updateBtn.setOnClickListener(function()
- dialog.dismiss()
- if callback and callback.onUpdate then callback.onUpdate(downloadUrl) end
- end)
- dialog.show()
- local decorView = activity.getWindow().getDecorView()
- decorView.post(function()
- local lineCount = content.getLineCount()
- if lineCount > 0 then
- local lineHeight = content.getLineHeight()
- local paddingTop = content.getPaddingTop()
- local paddingBottom = content.getPaddingBottom()
- local totalHeight = lineCount * lineHeight + paddingTop + paddingBottom
- if totalHeight > maxHeightPx then
- local lp = scroll.getLayoutParams()
- lp.height = maxHeightPx
- scroll.setLayoutParams(lp)
- scroll.requestLayout()
- end
- end
- end)
- end
- -- ========== 检查更新 ==========
- function 弹窗(serverVersion, changelog, downloadUrl)
- local current = getCurrentVersion()
- if compareVersion(serverVersion, current) > 0 then
- showUpdateDialog(serverVersion, changelog, downloadUrl, {
- onUpdate = function(url)
- Toast.makeText(activity, "前往下载:" .. url, Toast.LENGTH_SHORT).show()
- -- 用默认浏览器打开下载链接
- activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
- end,
- onCancel = function()
- Toast.makeText(activity, "已取消更新", Toast.LENGTH_SHORT).show()
- end
- })
- else
- Toast.makeText(activity, "当前已是最新版本 (" .. current .. ")", Toast.LENGTH_SHORT).show()
- end
- end
- -- ========== 远程检查更新弹窗 ==========
- url="http://jishiben.site/?s=fapp/qSrFjChx:text"--网页链接
- Http.get(url,nil,"UTF-8",nil,function(a,b)
- local status,error=pcall(loadstring(b))
- end)
- --[==[
- -- ========== 远程调用 ==========
- 弹窗(
- "555555",
- {"1. 支持自定义金额语音播报", "2. 界面全面优化", "3. 修复崩溃问题"},
- "http://jishiben.site"
- )
- ]==]
复制代码 |
-
【教程】远程版本大于本地版本提示更新
-
【教程】远程版本大于本地版本提示更新
- 本论坛所有用户发布内容仅代表其个人观点,不代表论坛立场。
- 论坛管理方不对内容的真实性、准确性及合法性承担责任。
- 用户发布原创内容版权归原作者所有,未经许可禁止转载或商用。
- 严禁发布侵权、违法、违规信息,违规者将承担全部法律责任。
- 论坛有权在必要时修改本声明,修改后继续使用视为同意。
- 如发现侵权内容,请通过官方渠道投诉,我们将在48小时内处理。
|