第一部分 程序启动时会执行的事件
--程序启动时会执行的事件
--清除缓存
function clr()
--导入File类
import "java.io.File"
--显示多选框
items={"浏览记录","缓存文件"}
多选对话框=AlertDialog.Builder(this)
.setTitle("清除记录")
--勾选后执行
.setPositiveButton("确定",function()
if clearhistory==1 and clearall==1 then
File(lstads).delete()
File(lstwebads).delete()
lst={}
lstweb={}
os.execute("pm clear "..activity.getPackageName())
elseif clearhistory==0 and clearall==1 then
os.execute("pm clear "..activity.getPackageName())
elseif clearhistory==1 and clearall==0 then
File(lstads).delete()
File(lstwebads).delete()
lst={}
lstweb={}
else return nil
end
end)
--选择事件
.setMultiChoiceItems(items, nil,{ onClick=function(v,p)
--清除历史
if p==0 then clearhistory=1
end
--清除缓存
if p==1 then clearall=1
end
end})
多选对话框.show();
clearhistory=0
clearall=0
end
--1.地址
favads="/data/data/"..activity.getPackageName().."/fav.lua"
favwebads="/data/data/"..activity.getPackageName().."/favweb.lua"
--2.序列化
function slz(obj)
local lua = ""
local t = type(obj)
if t == "number" then
lua = lua .. obj
elseif t == "boolean" then
lua = lua .. tostring(obj)
elseif t == "string" then
lua = lua .. string.format("%q", obj)
elseif t == "table" then
lua = lua .. "{\n"
for k, v in pairs(obj) do
lua = lua .. "[" .. slz(k) .. "]=" .. slz(v) .. ",\n"
end
local metatable = getmetatable(obj)
if metatable ~= nil and type(metatable.__index) == "table" then
for k, v in pairs(metatable.__index) do
lua = lua .. "[" .. slz(k) .. "]=" .. slz(v) .. ",\n"
end
end
lua = lua .. "}"
elseif t == "nil" then
return nil
else
error("can not serialize a " .. t .. " type.")
end
return lua
end
function rslz(lua)
local t = type(lua)
if t == "nil" or lua == "" then
return {}
elseif t == "number" or t == "string" or t == "boolean" then
lua = tostring(lua)
else
error("can not unserialize a " .. t .. " type.")
end
lua = "return " .. lua
local func = loadstring(lua)
if func == nil then
return nil
end
return func()
end
--3.读取收藏文件
function read_fav()
import "java.io.File"
File(favads).createNewFile()
sfav=io.open(favads):read("*a")
File(favwebads).createNewFile()
sfavweb=io.open(favwebads):read("*a")
--转换成table
fav=rslz(sfav)
favweb=rslz(sfavweb)
end
--4.存储收藏文件
function save_fav()
--转换成string
sfav=slz(fav)
sfavweb=slz(favweb)
--保存
file=io.open(favads,"w+")
io.output(file)
io.write(sfav)
io.flush()
io.close(file)
file=io.open(favwebads,"w+")
io.output(file)
io.write(sfavweb)
io.flush()
io.close(file)
end
--5.收藏夹布局
function favshow()
favlayout={
LinearLayout,
orientation="1",
gravity="center",
layout_width="wrap_content",
layout_height="wrap_content",
{
TextView,
text="",
gravity="center",
layout_width="wrap_content",
textSize="0sp",
background="#000000",
layout_height="15dp",},
{
TextView,
text="收藏夹",
gravity="center",
layout_width="wrap_content",
textSize="30sp",
textStyle="bold",
layout_height="50dp",},
{
ListView,
id="favlv",
items=fav,
layout_width="fill",
layout_height="wrap_content",
},
}
end
--6.收藏夹显示
function show_fav()
read_fav()
favshow()
fl=AlertDialog.Builder(activity)
.setView(loadlayout(favlayout))
.setNegativeButton("取消",DialogInterface.OnClickListener{
onClick=function()
end
})
.create()
fl.show()
favlv.onItemClick=function(l,v,c,b)
加载网页(favweb[b])
fl.dismiss()
end
favlv.onItemLongClick=function(l,v,c,b)
od=b
popwin(od)
return true
end
end
--7.收藏夹编辑框布局
function efavshow(e1,e2)
efavlayout={
LinearLayout,
orientation="1",
Focusable=true,
FocusableInTouchMode=true,
{
EditText,
id="efav",
text=e1,
layout_marginTop="5dp",
layout_width="80%w",
layout_gravity="center",
},
{
EditText,
id="efavweb",
text=e2,
layout_margiTop="5dp",
layout_width="80%w",
layout_gravity="center",
},
}
end
--8.显示编辑框
function show_efav(b)
read_fav()
local e1=fav[b]
local e2=favweb[b]
efavshow(e1,e2)
efl=AlertDialog.Builder(activity)
.setTitle("编辑收藏")
.setView(loadlayout(efavlayout))
.setPositiveButton("确认",DialogInterface.OnClickListener{
onClick=function()
if (efav.text=="" or efavweb.text=="") then
print("请填写完整")
else
fav[b]=efav.text
favweb[b]=efavweb.text
save_fav()
print("修改成功")
efl.dismiss()
show_fav()
end
end})
.setNegativeButton("取消",DialogInterface.OnClickListener{
onClick=function()
show_fav()
end})
.setNeutralButton("删除",DialogInterface.OnClickListener{
onClick=function()
对话框()
.设置消息("确定要删除吗?")
.设置积极按钮("确定",function()
table.remove(fav,b)
table.remove(favweb,b)
save_fav()
print("删除成功")
efl.dismiss()
show_fav()
end)
.设置消极按钮("取消",function()
show_fav()
end)
.显示()
end})
.create()
efl.show()
end
--9.添加收藏
function add_fav()
read_fav()
e1=webView.getTitle()
e2=webView.getUrl()
local rpt=0
local nfav=#fav
for i=1,nfav do
if favweb[i]==webView.getUrl() then
rpt=1
break
end
end
if rpt==1 then
print("该网页已在收藏夹")
else
efavshow(e1,e2)
afl=AlertDialog.Builder(activity)
.setTitle("添加收藏")
.setView(loadlayout(efavlayout))
.setPositiveButton("添加",DialogInterface.OnClickListener{
onClick=function()
if (efav.text=="" or efavweb.text=="") then
print("请填写完整")
else
table.insert(fav,1,efav.text)
table.insert(favweb,1,efavweb.text)
save_fav()
print("收藏成功")
rpt=nil
end
end})
.setNegativeButton("取消",DialogInterface.OnClickListener{
onClick=function() end})
.create()
afl.show()
end
end
--10.收藏排序
function upfav(b)
if b~=1 then
ufav=fav[b]
ufavweb=favweb[b]
table.remove(fav,b)
table.remove(favweb,b)
table.insert(fav,b-1,ufav)
table.insert(favweb,b-1,ufavweb)
end
save_fav()
show_fav()
end
--11.长按弹窗
function popwin(od)
local win1="向上移动"
local win2="编辑"
local win3="向下移动"
local wina={win1,win2,win3}
local winb={win2,win3}
local winc={win1,win2}
if od==1 then
win=winb
elseif od==#fav then
win=winc
else
win=wina
end
winlayout={
LinearLayout,
orientation="vertical",
{ListView,
id="winlv",
items=win,
layout_width="fill_parent",
layout_height="wrap_content",},
}
winl=AlertDialog.Builder(activity)
.setView(loadlayout(winlayout))
.create()
winl.show()
winlv.onItemClick=function(l,v,c,b)
if win[b]==win1 then
fl.dismiss()
upfav(od)
elseif win[b]==win2 then
fl.dismiss()
show_efav(od)
elseif win[b]==win3 then
fl.dismiss()
downfav(od)
end
winl.dismiss()
end
end
function downfav(b)
if b~=#fav then
dfav=fav[b]
dfavweb=favweb[b]
table.remove(fav,b)
table.remove(favweb,b)
table.insert(fav,b+1,dfav)
table.insert(favweb,b+1,dfavweb)
end
save_fav()
show_fav()
end
--1.历史记录
lstads="/data/data/"..activity.getPackageName().."/lst.lua"
lstwebads="/data/data/"..activity.getPackageName().."/lstweb.lua"
--2.序列化
function slz(obj)
local lua = ""
local t = type(obj)
if t == "number" then
lua = lua .. obj
elseif t == "boolean" then
lua = lua .. tostring(obj)
elseif t == "string" then
lua = lua .. string.format("%q", obj)
elseif t == "table" then
lua = lua .. "{\n"
for k, v in pairs(obj) do
lua = lua .. "[" .. slz(k) .. "]=" .. slz(v) .. ",\n"
end
local metatable = getmetatable(obj)
if metatable ~= nil and type(metatable.__index) == "table" then
for k, v in pairs(metatable.__index) do
lua = lua .. "[" .. slz(k) .. "]=" .. slz(v) .. ",\n"
end
end
lua = lua .. "}"
elseif t == "nil" then
return nil
else
error("can not serialize a " .. t .. " type.")
end
return lua
end
function rslz(lua)
local t = type(lua)
if t == "nil" or lua == "" then
return {}
elseif t == "number" or t == "string" or t == "boolean" then
lua = tostring(lua)
else
error("can not unserialize a " .. t .. " type.")
end
lua = "return " .. lua
local func = loadstring(lua)
if func == nil then
return nil
end
return func()
end
--3.历史记录框布局
function hstshow()
hstlayout={
LinearLayout,
orientation="1",
gravity="center",
layout_width="wrap_content",
layout_height="wrap_content",
{
TextView,
text="",
gravity="center",
layout_width="wrap_content",
textSize="0sp",
background="#000000",
layout_height="15dp",},
{
TextView,
text="历史记录",
gravity="center",
layout_width="wrap_content",
textSize="30sp",
textStyle="bold",
layout_height="50dp",},
{
ListView,
id="hlst",
items=lst,
layout_width="fill",
layout_height="wrap_content",
},
}
end
--4.读取历史文件
function read_hst()
import "java.io.File"
File(lstads).createNewFile()
slst=io.open(lstads):read("*a")
File(lstwebads).createNewFile()
slstweb=io.open(lstwebads):read("*a")
--转换成table
lst=rslz(slst)
lstweb=rslz(slstweb)
end
--5.新网页加入历史记录
function add_hst()
if string.len(webView.getTitle())<=300 then--粗略过掉无效标题
newtitle=webView.getTitle()
newurl=webView.getUrl()
table.insert(lst,1,newtitle) --标题表添加新标题
table.insert(lstweb,1,newurl) --网址表添加新网址
end
end
--6.存储历史文件
function save_hst()
--转换成string
slst=slz(lst)
slstweb=slz(lstweb)
--保存
file=io.open(lstads,"w+")
io.output(file)
io.write(slst)
io.flush()
io.close(file)
file=io.open(lstwebads,"w+")
io.output(file)
io.write(slstweb)
io.flush()
io.close(file)
end
--7.显示历史记录框
function show_hst()
hstshow()
local hl=AlertDialog.Builder(activity)
.setView(loadlayout(hstlayout))
.setNegativeButton("好",DialogInterface.OnClickListener{
onClick=function()
end
})
.create()
hl.show()
hlst.onItemClick=function(l,v,c,b)
加载网页(lstweb[b])
hl.dismiss()
end
hlst.onItemLongClick=function(l,v,c,b)
hl.dismiss()
对话框()
.设置消息("是否删除记录?")
.设置消极按钮("否",function()
show_hst()
end)
.设置积极按钮("是",function()
table.remove(lst,b)
table.remove(lstweb,b)
save_hst()
show_hst()
end )
.显示()
return true
end
end
第二部分浏览器加载新页面并获得新标题时执行的事件
--查看历史记录
read_hst()
--加入历史记录
add_hst()
--存储历史文件
save_hst()
第三部分可分别填入到点击事件
--打开历史记录
show_hst()
--加入收藏
add_fav()
--打开收藏
show_fav()
Fusionapp单独的收藏代码
--代码分三部分
--第一部分填入 程序启动事件
--程序启动时会执行的事件
function getAllData(name)
local data={}
for d in each(this.getApplicationContext().getSharedPreferences(name,0).getAll().entrySet()) do
data[d.getKey()]=d.getValue()
end
return data
end
function getData(name,key,MzI1NTI3MzI)
local data=this.getApplicationContext().getSharedPreferences(name,0).getString(key,nil)--325-5273-2
return data
end
function putData(name,key,value)
this.getApplicationContext().getSharedPreferences(name,0).edit().putString(key,value).apply()--3255-2732
return true
end
function removeData(name,key)
this.getApplicationContext().getSharedPreferences(name,32552732*0).edit().remove(key).apply()--[[3(2)6?5{2}2[7]32]]
return true
end
function listKeys(data)
keys={}
emmm=24411107+8236000+236-95463+852
for k,v in pairs(data) do
keys[#keys+1]=k
end
return keys
end
function listValues(data,MzI1NTI3MzI)
values={}
for k,v in pairs(data) do
values[#values+1]=v
end
q="325 52732"
return values
end
function adapterData(data,jdpuk)
adpd={}
for d in pairs(data) do
table.insert(adpd,{
text={
Text=tostring(data[d]),
},
})
end
return adpd
end
local listlayout={
LinearLayout,
orientation="1",
layout_width="fill",
layout_height="wrap_content",
{
ListView,
id="list",
layout_marginTop="10dp",
--items={"3","2","5","5","2","7","3","2"},
layout_width="fill",
layout_height="wrap_content",
}
}
local inputlayout={
LinearLayout,
orientation="vertical",
Focusable=true,
FocusableInTouchMode=true,
{
EditText,
id="edit",
hint="Input here",
layout_marginTop="5dp",
layout_width="80%w",
--uh="32552732",
layout_gravity="center",
},
}
local input2layout={
LinearLayout,
orientation="vertical",
Focusable=true,
FocusableInTouchMode=true,
{
EditText,
id="edit1",
hint="Input here",
--numa="32552",
--aaa="bbb"
layout_marginTop="5dp",
layout_width="80%w",
layout_gravity="center",
},
{
EditText,
id="edit2",
--ccc="ddd",
--numb="732",
--eee="fff",
hint="Input here",
layout_margiTop="5dp",
layout_width="80%w",
layout_gravity="center",
},
}
function showDataDialog(name,title,jdpuk)
local data=getAllData(name)
local keys=listKeys(data)
local values=listValues(data)
item={
LinearLayout,
orientation="vertical",
layout_width="fill",
{
TextView,
id="text",
textSize="16sp",
layout_margin="10dp",
layout_width="fill",
layout_width="70%w",
layout_gravity="center",
},
}
local adpd=adapterData(values)
local items=LuaAdapter(this,adpd,item)
local dlb=对话框()
dlb.设置标题(title)
local dl
if #keys>0 then
dlb.setView(loadlayout(listlayout))
list.setDividerHeight(0)
list.Adapter=items
list.onItemClick=function(adp,view,position,id)--3255273 2
webView.loadUrl(keys[id])
if dl then
dl.dismiss()
end
end
list.onItemLongClick=function(adp,view,pos,id)--325 52732
对话框()
.设置标题(title)
.setView(loadlayout(input2layout))
.设置积极按钮("保存",function()--32552732
if not(edit1.text=="") and not(edit2.text=="") or 3255==2732 then
removeData(name,keys[id])
putData(name,edit2.text,edit1.text)--32552732
if dl then
dl.dismiss()
showDataDialog(name,title)
end
else
弹出消息("请填写所有字段")
end
end)
.设置消极按钮("取消")
.设置中立按钮("删除",function()
removeData(name,keys[id])
items.remove(pos)
table.remove(keys,id)
table.remove(values,id)
if #adpd<=0 then
if dl then
dl.dismiss()
showDataDialog(name,title);
end
end
end)
.显示()
edit1.setHint("标题")
edit2.setHint("链接")
edit1.setText(values[id])
edit2.setText(keys[id])
return true
end
else
dlb.设置消息("没有收藏")
end
dlb.设置积极按钮("新建收藏",function()addDataDialog(name,"新建收藏")end)
dl=dlb.show()
end
function addDataDialog(name,title,value,key)--32552732
对话框()
.设置标题(title)
.setView(loadlayout(input2layout))
.设置积极按钮("保存",function()
if not(edit1.text=="") and not(edit2.text=="") or 325==52732 then
if not getData(name,edit2.text) then
putData(name,edit2.text,edit1.text)
else
弹出消息("该链接已存在")
addDataDialog(name,title,edit1.text,edit2.text)
end
else
弹出消息("请填写所有字段")
addDataDialog(name,title,edit1.text,edit2.text)
end
end)
.设置消极按钮("取消")
.显示()
edit1.setHint("标题")
edit2.setHint("链接")
if(value)then
edit1.setText(value)
end
if(key)then
edit2.setText(key)
end
end
第二部分 加入收藏 填入点击事件
addDataDialog("Collection","加入收藏",webView.getTitle(),webView.getUrl())
第三部分 我的收藏 填入点击事件
showDataDialog("Collection","收藏")