android 调用Lua, Lua脚本启动Intent
android 中的调用
try {
mLuaState.LdoString(readStream(getResources().openRawResource(
R.raw.testLua)));
// 找到functionInLuaFile函数
mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "launchIntent");
mLuaState.pushJavaObject(getApplicationContext());
mLuaState.call(1, 0);
} catch (Exception e) {
e.printStackTrace();
}
readStream 实现
private String readStream(InputStream is) {
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
int i = is.read();
while (i != -1) {
bo.write(i);
i = is.read();
}
return bo.toString();
} catch (IOException e) {
Log.e("ReadStream", "读取文件流失败");
return "";
}
}
在Android 工程 res/raw/新建lua脚本 testLua.lua
-- 启动 intent
function launchIntent(context)
-- new 一个java 实例
local intent = luajava.newInstance("android.content.Intent")
intent:addFlags(0x10000000)
intent:setAction("android.intent.action.VIEW")
-- bind 一个Java实例,调用static 方法
local uri = luajava.bindClass("android.net.Uri")
intent:setData(uri:parse("http://blog.csdn.net/hpccn"))
context:startActivity(intent);
end
静态类使用
uri = luajava.bindClass("android.net.Uri")
非静态类
intent = luajava.newInstance("android.content.Intent")
在Lua脚本中发启一个Intent, 打开一个网页,就是本人的博客。