首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理程序不调用

处理程序不调用
EN

Stack Overflow用户
提问于 2015-09-02 12:07:25
回答 3查看 71关注 0票数 3

我正在做验证调用,从我的app.Which应该断开后,5-10秒,这是配置。

这是我的密码;

代码语言:javascript
复制
                    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,获取代码中的问题所在。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-02 12:30:28

从我的角度来看,问题在于单线程android服务类,它在以前的活动获得over.So之前不会调用处理程序或任何方法,我在处理程序runnable中添加了一段代码,然后它就开始工作了。

代码语言:javascript
复制
 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();
                            }
                        }
                    });

如果有人有不同的答案/解决方案,请张贴。

票数 1
EN

Stack Overflow用户

发布于 2015-09-02 12:16:25

你要打电话给startActivity(callIntent).这意味着您正在将控制权转移到调用者应用程序android。当用户需要时,android调用程序现在可以断开调用。

票数 3
EN

Stack Overflow用户

发布于 2015-09-02 12:30:52

正如daniel提到的,一旦您启动了调用活动,您就不再控制您的应用程序主线程,您的应用程序主线程只有在您的活动回到前台时才能获得CPU时间。

要挂断,请使用this

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32352719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档