В одном ответе мне посоветовали использовать service call phone 2 s16 "$number"
. Это работает, но service list
я вижу другие полезные вещи, которые я не знаю, как использовать и не могу легко найти информацию в Интернете.
Я не вижу никакого самоанализа, service
кроме service list
как выяснить себя ...
Где найти более полное описание «сервисных» звонков и их параметров?
Ответы:
Короче говоря
Подробно
я столкнулся с множеством проблем, чтобы узнать об этом, и поэтому я поделюсь решением с помощью сервиса буфера обмена.
Для начала вам нужно узнать об интересующей вас услуге -
для этого вам нужно найти все службы, доступные для конкретной системы Android, набрав
Вот что вы получите -
Как я заинтересован в буфере обмена, вот как это выглядит
Итак, отсюда мы можем подвести итог, что имя службы - это служба буфера обмена, а путь к пакету - android.content.IClipboard.
Затем вам нужно знать полный путь к IClipboard.aidl.
Чтобы узнать, что вам нужно искать в Google для IClipboard.aidl.
Вам нужно искать что-то с сайта android.googlesource.com в результатах, как в моем случае-
Поэтому после + / android-4.2.2_r1 находится ваш путь. Пусть этот путь будет path_of_clipboard.aidl =
Поскольку эти коды вызовов службы зависят от системы Android, следовательно, вам необходимо знать имя вашего Android OS - в моем случае это 8.1.0.
Поэтому я пойду на следующий веб-сайт, где Google помещает туда код и выберите мою версию ОС из левая сторона страницы -
https://android.googlesource.com/platform/frameworks/base/
В моем случае это Android-8.1.0_r50. Я нажму на него, и после этого мой URL будет выглядеть так
И тогда после добавления path_of_clipboard.aidl мой полный URL будет выглядеть
Здесь будет много методов в интерфейсе. Как и в моем случае
Таким образом, код для первого метода, т.е. setPrimaryClip, будет равен 1, как это произошло на первом месте, а код для последнего метода, т.е. hasClipboardText, будет равен 7, как это произошло на седьмом месте в файле aidl. Аналогично для других методов.
Поэтому, если я хочу вызвать седьмой метод, я наберу
Как вы могли заметить, я не указывал имя вызывающего пакета, так как оно не требуется.
Если метод нуждается в аргументах, вы можете передать его, как показано в этом примере.
Давайте предположим метод, код которого равен 8 в буфере обмена и который выглядит следующим образом:
Так я буду называть это так
Здесь i32 обозначает 32-разрядное целое число, а s16 - строку. Мы можем даже передать логическое значение как целое число, как показано в примере.
В булевом целом числе 1 обозначает истину, а 0 - ложь.
СОВЕТ Держите logcat открытым (как в android studio), чтобы проверить наличие ошибок, возникших при выполнении этой команды adb.
Источник
источник
Реальная проблема
service call
заключается в том, что коды транзакций не только недокументированы, но и не гарантированы как стабильные - их можно молча менять между версиями Android. Из-за этогоservice call
команды никогда не должны использоваться, за исключением частной отладки, когда вы знаете, какая версия Android используется.Пример:
(Здесь
FIRST_CALL_TRANSACTION
= 1, поэтому фактический код транзакции, который должен использоваться вservice call phone
команде, равен числу, указанному в источнике плюс 1.)Обратите внимание, что в новой версии
TRANSACTION_supplyPuk
была вставлена посередине, и все последующие коды теперь сдвинуты на 1. Все, что использовалосьservice call phone
для выполнения этих транзакций, ужасно сломается при использовании на Android 4.2.2 - одни и те же коды приведут к вызову совершенно разных методов возможно с катастрофическими результатами.источник
service call
, но все же позволяет многое сделать с консоли суперпользователя?Там нет документации. Но вы можете найти всю информацию, которую вы ищете в исходном коде Android.
service list
дает вам имя пакета. Так что дляphone
службы это такcom.android.internal.telephony.ITelephony
. Вы найдете все возможные параметры дляservice call phone
перечисленных вcom/android/internal/telephony/ITelephony.java
вашей версии Android.источник