我开发了我的第一个 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/