Fusion App1.0封装了一些常用的中文函数,而最近内测的Fusion App2.0 beta7.1已经加入中文函数模块。

启用方法:模块-启用-动作-中文函数模块

(之前分享一些替代的英文代码,并分享一些常用代码。)

Fusion App 2开源项目分享


Fusion App2.0介绍:Fusion App2.0 | Lua学习笔记

一、网络类

先获取WebView

local uiManager=activity.getUiManager() 
--获取当前页面的WebView
local webView=uiManager.getCurrentFragment().getWebView()

1、加载网页

加载网页(“网页链接”)

--加载URL指定的网页
loadUrl("网页链接")
--携带http headers加载URL指定的网页
loadUrl("网页链接", Map<String, String> additionalHttpHeaders)
--使用POST请求加载指定的网页
postUrl(String url, byte[] postData)

2、刷新网页

刷新网页()

--重新加载当前网页
reload()

应用:WebView.reload(),以下类似

3、页面前进后退

网页前进()  网页后退()

--后退一页
goBack()
 
--前进一页
goForward()
 
--前进/后退steps页,大于0表示前进小于0表示后退
goBackOrForward(steps)

4、查看源码

local url="view-source:"..webView.getUrl()
webView.loadUrl(url)

二、软件类

2.1 打开微信

import "android.content.pm.PackageManager"
packageName="com.tencent.mm"
if pcall(function() activity.getPackageManager().getPackageInfo(packageName,0) end) then    
    manager = activity.getPackageManager()
    open = manager.getLaunchIntentForPackage(packageName)
    this.startActivity(open)
else
    print("你居然没有安装微信 Σ(ŎдŎ|||)ノノ")
end

2.2 打开微信扫一扫

import "android.content.pm.PackageManager"
if pcall(function() activity.getPackageManager().getPackageInfo("com.tencent.mm",0) end) then
    print("即将前往微信扫一扫")
    packageName="com.tencent.mm"
    manager = activity.getPackageManager()
    intent = manager.getLaunchIntentForPackage(packageName)
    intent.putExtra("LauncherUI.From.Scaner.Shortcut", true);
    intent.setAction("android.intent.action.VIEW");
    activity.startActivity(intent);
else
    print("你居然没有安装微信 Σ(ŎдŎ|||)ノノ")
end

2.3 打开支付宝

import "android.content.pm.PackageManager"
if pcall(function() activity.getPackageManager().getPackageInfo("com.eg.android.AlipayGphone",0) end) then
    packageName="com.eg.android.AlipayGphone"
    manager = activity.getPackageManager()
    open = manager.getLaunchIntentForPackage(packageName)
    this.startActivity(open)
else
    print("你居然没有安装支付宝 Σ(ŎдŎ|||)ノノ")
end

2.4 打开支付宝付款

import "android.net.Uri"
import "android.content.Intent"
import "android.content.pm.PackageManager"

if pcall(function() activity.getPackageManager().getPackageInfo("com.eg.android.AlipayGphone",0) end) then
  xpcall(function()
    local url = "alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://qr.alipay.com/fkx169974aht82orwgo2e80"
    activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)));
  end,
  function()
    local url = "https://qr.alipay.com/fkx169974aht82orwgo2e80";
    activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)));
  end)
else
  print("你居然没有安装支付宝 Σ(ŎдŎ|||)ノノ")
end

以上网址应该是收款码解码链接

2.5 打开手机QQ

import "android.content.pm.PackageManager"
packageName="com.tencent.mobileqq"
if pcall(function() activity.getPackageManager().getPackageInfo(packageName,0) end) then    
    manager = activity.getPackageManager()
    open = manager.getLaunchIntentForPackage(packageName)
    this.startActivity(open)
else
    print("你居然没有安装QQ Σ(ŎдŎ|||)ノノ")
end

三、页面类

1、进入页面

进入子页面(“”)

activity.startFusionActivity("页面名称")

带参数传递的详见:界面之间的交互
https://www.szfx.top/lua/fusionapp2.html

2、退出页面

退出页面()

activity.finish()

3、新页面打开链接

进入子页面(“页面”,{链接=”网站链接”})

local bundle=Bundle()      
bundle.putString("link","网站链接")
activity.startFusionActivity("进入的页面",bundle)

进入的页面

require "import"
import "android.os.Bundle"
import "net.fusionapp.core.ui.fragment.WebInterface"
import "android.content.Intent"
import "android.net.Uri"
import "android.graphics.Color"

fragment=activity.uiManager.currentFragment
web=fragment.webView
link=activity.getIntent().getStringExtra("link")
web.loadUrl(link)

title=activity.uiManager.getToolbar().getChildAt(0).getChildAt(0).getChildAt(1).getChildAt(0)
fragment.setWebInterface(WebInterface{
  onPageFinished=function(view,url)
    if url==link then
      web.clearHistory()
      title.text=web.title
    end
    if title.text=="about:blank"
      activity.finish()
    end
  end
})

四、交互类

1、弹出消息

弹出消息(“消息内容”)

print("消息内容")

2、对话框

对话框()
.设置标题("标题")
.设置消息("消息")
.设置积极按钮("确定",function()
  显示消息("点击了确定")
end)
.设置消极按钮("取消")
.显示()
require("import")
import"com.google.android.material.dialog.MaterialAlertDialogBuilder"
 
dialog=MaterialAlertDialogBuilder(activity)
dialog.setTitle("标题")
dialog.setMessage("这是对话框消息")
dialog.setNeutralButton("中立",nil)
dialog.setPositiveButton("积极",{
  onClick=function()
   print("点击了积极按钮")
  end
})
dialog.setNegativeButton("消极",{
  onClick=function()
   print("点击了消极按钮")
  end
})
dialog.show()

设置单选/多选列表,详见对话框组件
https://www.szfx.top/lua/fusionapp2.html

3、QQ交互

3.1  联系QQ

联系QQ(“”)

我只知道引导到个人名片,有哪位大佬知道直接到对话框

if (pcall(function() activity.getPackageManager().getPackageInfo("com.tencent.mobileqq",0) end) || pcall(function() activity.getPackageManager().getPackageInfo("com.tencent.tim",0) end) ) then
	local url="mqqapi://card/show_pslcard?src_type=internal&version=1&uin=1149702060&card_type=person&source=qrcode"
	activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
else
	print("请先安装手机QQ/TIM")
end

3.2  加QQ群

加QQ群(“”)

import "android.net.Uri"
import "android.content.Intent"
local url="mqqapi://card/show_pslcard?src_type=internal&version=1&uin=1095632335&card_type=group&source=qrcode"
activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))

3.3  QQ转账页面

import "android.net.Uri"
import "android.content.Intent"
local url="mqqapi://forward/url?url_prefix=aHR0cHM6Ly9tcXEudGVucGF5LmNvbS92Mi9oeWJyaWQvd3d3L21vYmlsZV9xcS9wYXltZW50L2luZGV4LnNodG1sP193dj0xMDI3JmZyb209MTMmX3ZhY2Y9cXc=&version=1&src_type=web"
activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))

五、文本类

1、分享文本

分享文本(“文本内容”)

import "androidx.core.app.ShareCompat"
ShareCompat.IntentBuilder
 .from(activity)
 .setText("文本内容")
 .setType("text/plain")
 .startChooser();

2、复制文本

复制文本(“”)

import "android.content.ClipData"
复制文本=function(文本)
  local clipboardManager = activity.getSystemService(activity.CLIPBOARD_SERVICE);
  local clipData = ClipData.newPlainText("Label", 文本);
  clipboardManager.setPrimaryClip(clipData);
end

3、页内查找

页内查找(“词”)

--设置网页查找结果回调
setFindListener(FindListener listener)
 
--异步执行查找网页内包含的字符串并设置高亮,查找结果会回调.
findAllAsync("需查找的关键词")
 
--查找下一个匹配的字符串
findNext(forward)
 
--清除网页查找的高亮匹配字符串
clearMatches()