函数

require "import"
import "android.graphics.Paint"
import "cjson"
import "cx"

local apiSecret = ""


function isEmail(email)
  if not email then return false end
  -- 去除首尾空格
  local str = email:gsub("^%s+", ""):gsub("%s+$", "")
  -- 最稳严格正则:支持纯数字账号、163/qq/企业邮箱
  local pat = "^[0-9a-zA-Z._-]+@[0-9a-zA-Z_-]+%.[a-zA-Z0-9._-]+$"
  -- local pat = [[\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*]]
  -- 强行拦截非法畸形
  if str:find("%.%.") -- 连续两点
    or str:find("@$") -- @结尾
    or str:find("^@") -- @开头
    or str:find("@%.") -- @后面直接点
    then
    return false
  end

  return str:match(pat) != nil
end


function sign(tbl)
  import "java.util.UUID"
  if type(tbl) != "table" then
    return nil;
  end
  tbl["timestamp"] = os.time()
  tbl["nonce"] = UUID.randomUUID().toString()
  local keys = {}
  for k, v in pairs(tbl) do
    if type(k) == "string" and k != "" and v != nil and v != "" then
      table.insert(keys, k)
    end
  end
  table.sort(keys, function(a, b)
    return a < b
  end)
  -- 3. 按排序结果拼接
  local strList = {}
  for _, k in ipairs(keys) do
    -- 再次确保值有效(防呆设计,防止中途值被改变)
    local v = tbl[k]
    if v != nil and v != "" then
      table.insert(strList, k .. "=" .. tostring(v))
    end
  end
  local md5Str = table.concat(strList, "&")
  tbl["sign"] = string.md5(md5Str .. "&apiSecret=".. apiSecret):lower()
  local str = {}
  for k, v in pairs(tbl) do
    table.insert(str, k .. "=" .. v)
  end
  return table.concat(str,"&")
end

function 复制(text)
  import "android.content.*"
  activity.getSystemService(Context.CLIPBOARD_SERVICE).setText(text)
end
function 卡片(边框厚度,边框颜色,背景颜色,圆角度)
  import "android.graphics.drawable.GradientDrawable"
  drawable=GradientDrawable()
  drawable.setShape(GradientDrawable.RECTANGLE)
  drawable.setStroke(边框厚度,tonumber(边框颜色))--边框厚度和背景颜色
  drawable.setColor(tonumber(背景颜色))--背景颜色
  drawable.setCornerRadius(圆角度)--圆角
  return drawable
end

function tw(message)
  local toasts={
    CardView;
    id="toastb",
    CardElevation="2dp";
    radius="10px";
    background="#C6000000";
    alpha=1,
    {
      TextView;
      layout_margin="30";
      TextColor="#ffffffff",
      layout_gravity="center";
      text="hello";
      textSize = "12sp",
      id="内容",
      layout_marginRight="15dp",
      layout_marginLeft="15dp",
    };
  };
  message=tostring(message)
  local context=activity.getApplicationContext();
  local duration=Toast.LENGTH_SHORT;
  local toast=Toast.makeText(context,"",duration)--.setGravity(Gravity.CENTER,0,0);
  toast.setView(loadlayout(toasts))--自定义布局
  内容.Text=message
  toast.show()
end


--写入文件
function 写文件(path, content)
  import "java.io.File"
  local f=File(tostring(File(tostring(path)).getParentFile())).mkdirs()
  io.open(tostring(path),"w"):write(tostring(content)):close()
end

--文件或文件夹是否存在
function 文件是否存在(path)
  local f=io.open(path,'r')
  if f~=nil then io.close(f) return true else return false end
end

--读取文件内容
function 读文件(path)
  local file=io.input(path)
  local str=io.read("*a")
  io.close()
  return tostring(str)
end

--删除文件或文件夹
function 删文件(path)
  local sc = os.execute("rm -r "..path)
  if sc then
    tw("成功")
   else
    tw("失败")
  end
end

--调用系统浏览器打开网页
function 浏览器打开网页(url)
  import "android.content.Intent"
  import "android.net.Uri"
  tw("如果网页无法打开,请刷新网页!")
  local viewIntent = Intent("android.intent.action.VIEW",Uri.parse(url))
  activity.startActivity(viewIntent)
end

function 圆角(view,InsideColor,radiu)
  import "android.graphics.drawable.GradientDrawable"
  drawable = GradientDrawable()
  drawable.setShape(GradientDrawable.RECTANGLE)
  drawable.setColor(InsideColor)
  drawable.setCornerRadii({radiu,radiu,radiu,radiu,radiu,radiu,radiu,radiu});
  view.setBackgroundDrawable(drawable)
end

function 加载框()
  import "android.app.AlertDialog"
  import "android.graphics.drawable.GradientDrawable"
  import "android.graphics.drawable.AnimationDrawable"
  import "android.graphics.PorterDuff"
  import "android.graphics.PorterDuffColorFilter"
  -- 遮罩
  local mask = GradientDrawable()
  mask.setColor(0x00000000)
  mask.setCornerRadius(0)

  local lay = {
    LinearLayout,
    background = mask,
    gravity="center",

    {
      LinearLayout,
      layout_width = "55dp",
      layout_height = "55dp",
      gravity="center",
      id="bb",
      orientation = "vertical",
      -- 加载圈
      {
        ProgressBar,
        layout_width = "20dp",
        layout_height = "20dp",

        id="pb",
      }
    }
  }

  local builder = AlertDialog.Builder(this)
  builder.setView(loadlayout(lay))
  local mode = PorterDuff.Mode.SRC_IN
  local filter = PorterDuffColorFilter(0xFFFFFFFF, mode)
  pb.getIndeterminateDrawable().setColorFilter(filter)
  local dialog = builder.create()
  local win = dialog.getWindow()
  win.setLayout(-1, -1) -- 全屏
  win.setBackgroundDrawable(mask)
  --win.setDimAmount(0) -- 取消系统自带阴影
  圆角(bb,0x98000000, 360)
  dialog.setCancelable(false)
  dialog.setCanceledOnTouchOutside(false)
  dialog.show()
  return dialog
end


function 登录信息(_info)
  local 路径 = "/sdcard/aus/info"
  if _info != nil then
    写文件(路径,_info)
  end
  if !文件是否存在(路径) then
    return nil
  end
  local suc, data = xpcall(function()
    import "cjson"
    return cjson.decode(读文件(路径))
  end, function()end)
  if suc then
    return data
  end
  return nil
end

标签: none

评论已关闭