Мне нужны подсказки для программного завершения вызова WhatsApp.
это приложение для программного вызова WhatsApp программно с таймерами, поэтому, когда таймер выключается, сам вызов завершается
вот код для начала звонка.
это делается через contactId и намерение связаться с
contactId = getContactIdFromNumber(Utils.formatPhoneNumber(phoneNumber), mimeType)
url = Constants.CALL_URI + contactId.toString()
if (contactId != 0.toLong()) {
val i = Intent(Intent.ACTION_VIEW)
i.setDataAndType(Uri.parse(url),"vnd.android.cursor.item/vnd.com.whatsapp.video.call")
i.setPackage("com.whatsapp")
startActivity(i)
}
и вот мой код для завершения звонка
thread(start = true) {
Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_HEADSETHOOK)
}
я пытался с помощью adb вызов завершился.
, но когда он выполняется с указанным выше кодом, ему необходимо разрешение INJECT_EVENTS
java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
Я знаю, что INJECT_EVENTS
требует подписи системного приложения.
но это немного сложно.
есть ли способ сделать это "нормально"?
на данный момент лучшее, что я могу найти, - это инструментальная среда, для которой требуется подпись приложений root / system.
Кто-нибудь имел решение для завершения вызова или для кода выше?
на данный момент, я думаю, root не вариант, потому что владелец не будет root его устройств. но это нормально для подписи системных приложений, если не нужно root или иначе.
спасибо до