我制作了一个Android应用程序,它只调用你输入的数字范围。 从您输入的起始编号开始,并以您输入的“完成”编号结束。响铃7秒后,应用程序会自动挂断。 代码如下。
public void onClick(View view){
EditText starte = (EditText) findViewById(R.id.start);
EditText finishe = (EditText) findViewById(R.id.finish);
EditText prefixes = (EditText) findViewById(R.id.prefixes);
String prefix = prefixes.getText().toString();
/** Get Telephone number String **/
int startOriginal = Integer.parseInt(starte.getText().toString());
int finish = Integer.parseInt(finishe.getText().toString());
for (int start = startOriginal; start<=finish; start++) {
startCall(prefix, Integer.toString(start));
try {
Thread.sleep(7000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
new CallUtilities("endcall");
}
private void startCall(String prefix, String nr){
Intent intent = new Intent("android.intent.action.CALL");
Uri data = Uri.parse("tel:"+ prefix + nr);
/** Setting intent data */
intent.setData(data);
/** Starting the caller activity by the implicit intent */
startActivity(intent);
}
CallUtilities类是我写的,只是通过反射方法结束调用。现在我的问题是,当你输入一个起始编号和一个完成编号时,应用程序似乎总是调用例如1的第一个数字,然后挂起它直接到3然后再到4和5等等就像它应该做的那样。什么是错的? 还有可能在这里使用DisconnectCause来解决断开连接过早挂断的原因吗? 提前谢谢!
答案 0 :(得分:2)
这是灾难的秘诀。原因有几个。
你是(假设{1}}在UI线程上运行)试图睡眠UI线程。
如果UI线程挂起超过5秒,则会导致ANR。
此外,您似乎正在尝试同时启动多个活动。这当然不是设计应用程序的正确方法。
更不用说使用Reflection访问核心Android组件来结束通话。这可能会在将来导致您的应用程序出现问题。
我对多个活动/睡眠问题的建议: