fusion app自定义事件源码介绍(下)

安装apk

安装APK(filePath)

  • lua源码
function 安装APK(filePath)
  local intent = Intent(Intent.ACTION_VIEW);
  intent.addCategory("android.intent.category.DEFAULT");
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  local uri = nil
  if (Build.VERSION.SDK_INT >=  24) then--24是N
    uri = xFileProvider.getUriForFile(activity, activity.getPackageName()..".FileProvider", File(filePath))
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
   else
    uri = Uri.fromFile(File(filePath))
  end
  intent.setDataAndType(uri, "application/vnd.android.package-archive");
  activity.startActivity(intent);
end

联系QQ(qqNUM)

联系QQ(qqNUM)

  • lua源码
function 联系QQ(qqNUM)
  local s = "mqqwpa://im/chat?chat_type=wpa&uin=" .. qqNUM
  activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(s)))
end

加QQ群

加QQ群

  • lua源码
function 加QQ群(qqNUM)
  local s = "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=" .. qqNUM .. "&card_type=group&source=qrcode"
  activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(s)))
end

发送邮件

发送邮件(email,subject,content)

  • lua源码
function 发送邮件(email,subject,content)
  import "android.content.Intent"
  i = Intent(Intent.ACTION_SEND)
  i.setType("message/rfc822")
  i.putExtra(Intent.EXTRA_EMAIL, {email})
  i.putExtra(Intent.EXTRA_SUBJECT,subject)
  i.putExtra(Intent.EXTRA_TEXT,content)
  activity.startActivity(Intent.createChooser(i, "Choice"))
end

获取剪切板

获取剪切板()

  • lua源码
function 获取剪切板()
  if(Context==nil)then
    import "android.content.Context"
  end
  return activity.getSystemService(Context.CLIPBOARD_SERVICE).getText()
end

复制文本

复制文本(a)

  • lua源码
function 复制文本(a)
  if(Context==nil)then
    import "android.content.Context"
  end
  activity.getSystemService(Context.CLIPBOARD_SERVICE).setText(a)
end

分享链接

分享链接()

  • lua源码
function 分享链接()
  分享文本(获取浏览器().url)
end

对话框

泡沫对话框

  • lua源码
local bindClass=luajava.bindClass
local AlertDialog=bindClass("android.app.AlertDialog")
local Builder=AlertDialog.Builder
local indexBuilderPool={}
function 对话框(ctx)
  local index=#indexBuilderPool+1
  local dialog=AlertDialog.Builder(ctx or activity or this)
  indexBuilderPool[index]=dialog
  local _M
  _M= {
    ["设置标题"]=function(...) dialog.setTitle(...) return _M end;
    ["设置消息"]=function(...) dialog.setMessage(...) return _M end;
    ["设置积极按钮"]=function(...)
      local args={...}
      if (#args==1) then
        dialog.setPositiveButton(args[1],nil)
       else
        dialog.setPositiveButton(...)
      end
      return _M end;
    ["设置消极按钮"]=function(...)
      local args={...}
      if (#args==1) then
        dialog.setNegativeButton(args[1],nil)
       else
        dialog.setNegativeButton(...)
      end
      return _M end;
    ["设置中立按钮"]=function(...)
      local args={...}
      if (#args==1) then
        dialog.setNeutralButton(args[1],nil)
       else
        dialog.setNeutralButton(...)
      end
      return _M end;
    ["显示"]=function(...)
      dialog=dialog.show(...)
      indexBuilderPool[index]=dialog
      return _M end;
    ["创建"]=function(...)
      dialog=dialog.create(...)
      indexBuilderPool[index]=dialog
      return _M end;
    ["取消"]=function(...) dialog.cancel(...) return _M end;
    ["关闭"]=function(...)
      dialog.dismiss(...)
      luajava.clear(indexBuilderPool[index])
      indexBuilderPool[index]=true
      return _M end;
    ["dismiss"]=function(...)
      dialog.dismiss(...)
      luajava.clear(indexBuilderPool[index])
      indexBuilderPool[index]=true
      return _M end;
    ["隐藏"]=function(...) dialog.hide(...) return _M end;
    ["设置按钮"]=function(...) dialog.setButton(...) return _M end;
    ["设置按钮1"]=function(...) dialog.setButton(...) return _M end;
    ["设置按钮2"]=function(...) dialog.setButton(...) return _M end;
    ["设置按钮3"]=function(...) dialog.setButton(...) return _M end;
    ["设置视图"]=function(...) dialog.setView(...) return _M end;
    ["设置图标"]=function(...) dialog.setIcon(...) return _M end;
    ["设置是否可以取消"]=function(...) dialog.setCancelable(...) return _M end;
    ["设置项目"]=function(...) dialog.setItems(...) return _M end;
    ["设置多选项目"]=function(...) dialog.setMultiChoiceItems(...) return _M end;
    ["设置取消监听器"]=function(...) dialog.setOnCancelListener(...) return _M end;
    ["设置关闭监听器"]=function(...) dialog.setOnDismissListener(...) return _M end;
    ["设置按键监听器"]=function(...) dialog.setOnKeyListener(...) return _M end;
    ["设置项目选择监听器"]=function(...) dialog.setOnItemSelectedListener(...) return _M end;
    ["启用测量时设置回收"]=function(...) dialog.setRecycleOnMeasureEnabled(...) return _M end;
    ["设置简单选择项目"]=function(...) dialog.setSingleChoiceItems(...) return _M end;
    ["设置自定义标题"]=function(...) dialog.setCustomTitle(...) return _M end;
    ["设置适配器"]=function(...) dialog.setAdapter(...) return _M end;
    ["设置光标"]=function(...) dialog.setCursor(...) return _M end;
    ["设置图标属性"]=function(...) dialog.setIconAttribute(...) return _M end;
    ["设置背景强制反向"]=function(...) dialog.setInverseBackgroundForced(...) return _M end;
    ["获得按钮"]=function(...) dialog.getButton(...) return _M end;
    ["获得列表视图"]=function(...) dialog.getListView(...) return _M end;
    ["当键按下时"]=function(...) dialog.onKeyDown(...) return _M end;
    ["当键抬起时"]=function(...) dialog.onKeyUp(...) return _M end;
    ["添加内容视图"]=function(...) dialog.addContentView(...) return _M end;
    ["设置内容视图"]=function(...) dialog.setContentView(...) return _M end;
    ["关闭选项菜单"]=function(...) dialog.closeOptionsMenu(...) return _M end;
    ["是否正在显示"]=function(...) dialog.isShowing(...) return _M end;
    ["获得窗口"]=function(...) dialog.getWindow(...) return _M end;
    ["设置能否在点击外部后取消"]=function(...) dialog.setCanceledOnTouchOutside(...) return _M end;
    ["设置取消消息"]=function(...) dialog.setCancelMessage(...) return _M end;
    ["getThisDialogObject"]=function()return dialog end,
    ["获得对话框实例"]=function()return dialog end,
  }
  local transC2E={
    ["标题"]="Title",
    ["消息"]="Message",
  }
  setmetatable(_M,{
    ["__newindex"]=function(_M,k,v)
      k=transC2E[k] or k
      dialog[k]=v
    end,
    ["__index"]=function(_M,method,...)
      if method=="标题" or method=="Title" or method=="title" or method=="getTitle" then
        return dialog.findViewById(android.R.id.icon).parent.getChildAt(1).text
      end
      if method=="消息" or method=="Message" or method=="message" or method=="getMessage" then
        return dialog.findViewById(android.R.id.message).text
      end
      _M[method]=function(...)
        local a=dialog[method]
        if type(a)=="function" then
          a(...)
         else
          return a
        end
        return _M
      end
      return _M[method]
    end
  })
  return _M
end
function 泡沫对话框(ctxOrnum,num)
  if num==nil then
    num=ctxOrnum
    ctxOrnum=nil
  end
  local token="|"..tostring(tointeger(num))
  local OneTimeDialogMark=activity.getSharedData("ONE-TIME-DIALOG-MARK")
  if OneTimeDialogMark==nil then
    OneTimeDialogMark="|"
    activity.setSharedData("ONE-TIME-DIALOG-MARK",OneTimeDialogMark)
  end
  if OneTimeDialogMark:find(token,0,true) then
    local _M={}
    setmetatable(_M,{
      ["__index"]=function(_M,method,...)
        _M[method]=function(...) return _M end
        return _M[method]
      end
    })
    return _M
  end
  OneTimeDialogMark=OneTimeDialogMark..token
  local basedialog=对话框(ctxOrnum)
  local func1=basedialog["显示"]
  local func2=basedialog["show"]
  basedialog["显示"]=function(...)
    func1(...)
    activity.setSharedData("ONE-TIME-DIALOG-MARK",OneTimeDialogMark)
  end
  basedialog["show"]=function(...)
    func2(...)
    activity.setSharedData("ONE-TIME-DIALOG-MARK",OneTimeDialogMark)
  end
  return basedialog
end

本文由【产品经理不是经理】 gzh 同步发布,欢迎关注

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容