首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式应答Whatsapp视频呼叫

以编程方式应答Whatsapp视频呼叫
EN

Stack Overflow用户
提问于 2018-04-11 12:56:13
回答 3查看 7.5K关注 0票数 25

有没有办法在安卓系统中使用AccessibilityService自动应答whatsapp视频呼叫?

或者有什么方法可以刺激对耳机/蓝牙的呼叫应答按钮的点击?我怎样才能得到应答按钮的id?使用辅助功能服务执行单击

我知道从Android8.0 Oreo开始,我们有ANSWER_PHONE_CALLS权限,但对于我的项目,我想使用一个旧设备进行远程监控。

任何帮助都将不胜感激!

--更新:多亏了希米希尔先生和卡巴齐先生的回答,这个应用程序能够接电话,但需要一个系统应用程序才能工作!有没有办法让它工作,而不是一个系统的应用程序?没有耳机的扣式黑客?

代码语言:javascript
复制
public class AnswerCall  extends AccessibilityService {
    @Override
    public void onAccessibilityEvent( AccessibilityEvent event )
    {
        if(event.getEventType() == TYPE_WINDOW_CONTENT_CHANGED)
        {

            if(event.getPackageName().equals("com.whatsapp"))
            {

                Thread thread = new Thread() {
                    @Override
                    public void run() {
                        try {
                            while(true) {
                                Instrumentation inst = new Instrumentation();
                                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_HEADSETHOOK);
                            }
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                };

                thread.start();
                StringBuilder sb = new StringBuilder();
                List<CharSequence> texts = event.getText();
                if (!texts.isEmpty())
                {
                    for (CharSequence s : event.getText()) {
                        sb.append(s);
                    }
                    if(sb.toString().equals("Incoming video call"))
                        Log.d( "onAccessibilityEvent", "whatsapp video call" );

                }
            }
        }
    }

    @Override
    public void onInterrupt() {

    }
}
EN

回答 3

Stack Overflow用户

发布于 2018-04-20 16:35:41

我不认为你能做你想做的事。使用AccessibilityService,您可以知道视频呼叫何时出现:

代码语言:javascript
复制
@Override
public void onAccessibilityEvent( AccessibilityEvent event )
{
    if(event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED)
    {
        if(event.getPackageName().equals("com.whatsapp"))
        {
            StringBuilder sb = new StringBuilder();
            List<CharSequence> texts = event.getText();
            if (!texts.isEmpty()) 
            {
                for (CharSequence s : event.getText()) 
                {
                    sb.append(s);
                }
                if(sb.toString().equals("Incoming video call"))
                {
                    Log.d( "onAccessibilityEvent", "whatsapp video call" );
                }
            }
        }
    }
}

然而,我从未能够以编程的方式来响应这个电话。如何在Android5.0 (Lollipop)中以编程方式应答来电?的问题在列举所有可能的选项方面做得很好,但大多数问题都需要根和/或系统应用程序。

票数 11
EN

Stack Overflow用户

发布于 2018-04-19 13:55:58

您可以从sendKeyDownUpSync类中使用Instrumentation方法。

代码语言:javascript
复制
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_HEADSETHOOK);

如果此代码不起作用,请尝试使用另一个KeyEvent来找到正确的代码。

您可以从以下链接看到KeyEvent的列表:https://developer.android.com/reference/android/view/KeyEvent.html

您可以从这里签入更多信息:插装

票数 6
EN

Stack Overflow用户

发布于 2018-04-19 22:09:19

实现这一目标的一种经典方法是使用NotificationListenerService观察通知并对相关的通知的行动进行操作。

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

https://stackoverflow.com/questions/49775772

复制
相关文章

相似问题

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