脚本功能描述:监听通知服务,如果是短信服务则获取短信内容并将短信内容通过QQ发送给置顶联系人。
脚本开发目的:使用多个手机号码,手机不支持双卡又不想随身携带多部手机,备用手机通话可以设置来电转接,短信却没有相关功能(绿芽app可以实现短信转发到微信,但是需要收费),因此编写了这样一段代码。
可能存在的问题:1. 没有判断QQ启动时是否处于消息列表界面,如果感兴趣可以自行修改此段代码。2. 如果手机设置了密码或是图形锁或是滑动解锁,请自行编写解锁相关代码或是取消锁定。

"auto";
events.observeNotification();
events.on("notification", function (n) {
// log("收到新通知:\n 标题: %s, 内容: %s, \n包名: %s", n.getTitle(), n.getText(), n.getPackageName());
//短信服务包名可能会有所不同,如果无法使用,请开启日志查看短信服务包名
//例如三星的短息服务包名为com.samsung.android.messaging
//n.getTitle()为发件人号码,如果通讯录中有该联系人,则会显示通讯录中的备注名称,n.getText()为短信内容
if ("com.android.messaging" == n.getPackageName()) {
device.wakeUpIfNeeded();
n.click();
sleep(500);
//要发送的内容
var reSendMsg = "来自" + n.getTitle() + "的短信\n" + n.getText();
//启动QQ
launchApp("QQ");
//等待首页加载,没有判断是否处于消息列表页面,请自行完善
text("消息").waitFor();
//获取联系人列表
var contactList = id('com.tencent.mobileqq:id/relativeItem').find();
if (contactList.size() > 0) {
//置顶联系人
var me = contactList.get(0);
//打开置顶联系人
click(me.bounds().centerX(), me.bounds().centerY());
//等待加载聊天页面
text('ME').waitFor();
//获取输入框
var inputTxt = className("android.widget.EditText").untilFindOne();
click(inputTxt.bounds().centerX(), inputTxt.bounds().centerY());
//设置输入框的内容为n.getText()的内容
inputTxt.setText(reSendMsg);
//点击发送按钮
if (text("发送").exists()) {
while (!click("发送"));
//返回消息列表
backtoPre();
//等待加载信息列表页面
text("消息").waitFor();
//返回主屏幕
home();
}
} else {
toast("联系人列表为空");
}
}
});

function backtoPre() {
//左上角返回按钮
var backBtn = id('com.tencent.mobileqq:id/name').desc("返回消息").findOne();
if (backBtn) {
//点击
click(backBtn.bounds().centerX(), backBtn.bounds().centerY());
}
}

最后由 cainkid 编辑