gpt4 book ai didi

java - 在循环中执行重处理方法

转载 作者:行者123 更新时间:2023-12-01 12:45:23 26 4
gpt4 key购买 nike

我开发了我的第一个 Android 应用程序,它读取收到的短信并执行短信中的命令,例如:

bluetooth(on);data(off);wifi(on);device(vibrate);

我像这样将命令分成数组

String[] array = sms.split(";");

所以我有

bluetooth(on) data(off) wifi(on) device(vibrate)

然后在循环中我对数组执行一些操作,如下所示

for(String s:array){
String function_name = s.substring(0,s.indexOf("("));
String function_arg = s.substtring(s.indexOf("(")+1,s.indexOf(")"));
}

所以对于其中任何一个我都有:

function = bluetooth and argument = on
function = data and argument = off
function = wifi and argument = on
function = device and argument = vibrate

现在我已经宣布了

public void Bluetooth(int arg){
//
}
public void Data(int arg){
//
}
public void Wifi(int arg){
//
}
public void Device(int arg){
//
}

我声明的所有方法都工作正常,我的意思是当我调用蓝牙(1)时,我的服务会打开蓝牙,或者我调用设备(2)时,它将设备设置为振动模式。它没有问题,但是当我在循环中调用这个方法时,只有第一个方法执行,而其他方法则默默地失败。例如:我的短信是“设备(振动);数据(打开);蓝牙(关闭);”当我执行循环中的每个命令时,仅执行第一个命令(无论哪个是第一个),而其他命令则默默地失败。我的整个代码是:

for(String function:functions){
String funcname = function.substring(0,function.indexOf("("));
String funcarg = function.substring(function.indexOf("(")+1,function.indexOf(")"));
int arg = -1;
if(funcarg.equals("on")){
arg = 1;
}else if(funcarg.equals("off")){
arg = 0;
}else if(funcarg.equals("vibrate")){
arg = 2;
}else if(funcarg.equals("normal")){
arg = 3;
}else if(funcarg.equals("silent")){
arg = 4;
}else if(funcarg.equals("in")){
arg = 5;
}else if(funcarg.equals("out")){
arg = 6;
}else if(funcarg.equals("missed")){
arg = 7;
}else if(funcarg.equals("all")){
arg = 8;
}else if(funcarg.equals("draft")){
arg = 9;
}
if(funcname.equals("bluetooth")){
Bluetooth(arg);
}else if(funcname.equals("device")){
Device(arg);
}else if(funcname.equals("data")){
Data(arg);
}else if(funcname.equals("wifi")){
Wifi(arg);
}else if(funcname.equals("unlog")){
Unlog(arg);
}else if(funcname.equals("clearsms")){
ClearSms(arg);
}else if(funcname.equals("contact")){
Contact(arg);
}else if(funcname.equals("sync")){
Sync(arg);
}
}

想象我的功能是= {"bluetooth(on)","device(vibrate)","wifi(off)","data(on)",...}我的代码应该调用 bluetooth(1) device(2) wifi(0) data(1) 但只执行第一个。提前致谢。

最佳答案

也许您正在使 UI 线程重载。尝试使用AsyncTask执行接收到的命令。

关于java - 在循环中执行重处理方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com