我正在做验证调用,从我的app.Which应该断开后,5-10秒,这是配置。
这是我的密码;
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
handler.postDelayed(new Runnable() {
@Override
public void run() {
/*It is never called up untill call got disconnected/hanged up. */
Log.d(TAG, "Disconnecting :");
disconnectCall();
}
}, 5000);
startActivity(callIntent);问题是disconnectCall()方法在暂停callIntent活动之前不会调用,即用户强行断开连接调用/挂起。我需要在调用disconnectCall()的过程中调用activity.Not,获取代码中的问题所在。
发布于 2015-09-02 12:30:28
从我的角度来看,问题在于单线程android服务类,它在以前的活动获得over.So之前不会调用处理程序或任何方法,我在处理程序runnable中添加了一段代码,然后它就开始工作了。
handler.post(callTestHandler = new Runnable() {
@Override
public void run() {
try {
//Intent callIntent = new Intent("android.intent.action.NEW_OUTGOING_CALL");
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d(TAG, "Disconnecting :");
disconnectCall();
}
}, 5000);
startActivity(callIntent);
} catch (Exception e) {
e.getMessage();
}
}
});如果有人有不同的答案/解决方案,请张贴。
发布于 2015-09-02 12:16:25
你要打电话给startActivity(callIntent).这意味着您正在将控制权转移到调用者应用程序android。当用户需要时,android调用程序现在可以断开调用。
发布于 2015-09-02 12:30:52
正如daniel提到的,一旦您启动了调用活动,您就不再控制您的应用程序主线程,您的应用程序主线程只有在您的活动回到前台时才能获得CPU时间。
要挂断,请使用this。
https://stackoverflow.com/questions/32352719
复制相似问题