什么是反思,为什么它有用?
我对Java特别感兴趣,但我认为在任何语言中原则都是一样的.
有没有办法在Android中使用AccessibilityService自动回答whatsapp视频通话?
或者有没有办法刺激点击耳机/蓝牙的呼叫应答按钮?我怎样才能获得回答按钮的ID?使用辅助功能服务执行单击
我知道从Android 8.0 Oreo开始我们有ANSWER_PHONE_CALLS权限,但对于我的项目,我想使用旧设备进行远程监控.
任何帮助,将不胜感激!
-----更新:感谢hemisphire先生和Kahbazi先生的回答,该应用程序能够接听电话,但需要成为一个系统应用才能工作!有没有办法让它成为一个没有系统应用程序的工作?没有耳机的按钮黑客?
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);
} …Run Code Online (Sandbox Code Playgroud) 从一年开始,我一直在研究物联网产品,所附的应用程序工作正常.现在我无法在更高版本的android中以编程方式接受调用.功能对产品非常重要.任何帮助都非常感谢.
在2016年11月安全补丁更新之前,Runtime.getRunTime.exec("Command")以编程方式接受呼叫工作正常.
Runtime.getRuntime().exec("input keyevent " +Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
Run Code Online (Sandbox Code Playgroud)
如何在Nougat版本的android中实现它.
寻找任何类型的黑客.
我已经为增强功能打开了一个帖子.
注意*如果您中的任何一方遇到同样的问题,请请求加入Android Dev Team并提供用户获得运行时许可的条款.按照上面提到的URL来请求.
android android-security android-7.0-nougat android-7.1-nougat
我可以通过任何adb命令接听电话吗?我知道您可以通过"adb shell service call phone 2 s16"+15084157509"拨打电话号码".
电话服务可以接听电话,还是可以发送一些adb命令来操纵活动?
非常感激
方法AudioManager.isWiredHeadsetOn()已从API级别14弃用,我们现在如何检测是否连接了有线耳机?
有没有办法在没有root权限的情况下以编程方式回答Android 6.0中的来电?我尝试了以下方法:
android.permission.MODIFY_PHONE_STATE在Android 6.0中未提供给第三方应用.有没有办法在没有root权限的情况下以编程方式应答Android 7.0中的来电?我尝试了以下方式接听来电。
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Class<?> c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
Object telephonyService = m.invoke(tm);
Class<?> telephonyServiceClass = Class.forName(telephonyService.getClass().getName());
Method endCallMethod = telephonyServiceClass.getDeclaredMethod("answerRingingCall");
endCallMethod.invoke(telephonyService);
Run Code Online (Sandbox Code Playgroud)