有没有办法在安卓系统中使用AccessibilityService自动应答whatsapp视频呼叫?
或者有什么方法可以刺激对耳机/蓝牙的呼叫应答按钮的点击?我怎样才能得到应答按钮的id?使用辅助功能服务执行单击
我知道从Android8.0 Oreo开始,我们有ANSWER_PHONE_CALLS权限,但对于我的项目,我想使用一个旧设备进行远程监控。
任何帮助都将不胜感激!
--更新:多亏了希米希尔先生和卡巴齐先生的回答,这个应用程序能够接电话,但需要一个系统应用程序才能工作!有没有办法让它工作,而不是一个系统的应用程序?没有耳机的扣式黑客?
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() {
}
}发布于 2018-04-20 16:35:41
我不认为你能做你想做的事。使用AccessibilityService,您可以知道视频呼叫何时出现:
@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)中以编程方式应答来电?的问题在列举所有可能的选项方面做得很好,但大多数问题都需要根和/或系统应用程序。
发布于 2018-04-19 13:55:58
您可以从sendKeyDownUpSync类中使用Instrumentation方法。
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_HEADSETHOOK);如果此代码不起作用,请尝试使用另一个KeyEvent来找到正确的代码。
您可以从以下链接看到KeyEvent的列表:https://developer.android.com/reference/android/view/KeyEvent.html
您可以从这里签入更多信息:插装
发布于 2018-04-19 22:09:19
实现这一目标的一种经典方法是使用NotificationListenerService观察通知并对相关的通知的行动进行操作。
https://stackoverflow.com/questions/49775772
复制相似问题