Где найти информацию о команде оболочки «service call» для Android?

Используя adb shell или эмулятор терминала на устройстве, введите это, чтобы очистить все уведомления (требуется su )

 service call notification 1 

Это отправит sms (не требует su )

 service call isms 5 s16 "PhoneNumber" i32 0 i32 0 s16 "BodyText" 

Где я могу узнать больше об service call ? Я нашел этот вопрос и оценил распад ответа относительно того, что все значит. Но где я могу найти информацию о том, что может вызвать вызов метода notification 2 ?

Запуск service call был неполным и напечатал это использование:

 Usage: service [-h|-?] service list service check SERVICE service call SERVICE CODE [i32 INT | s16 STR] ... Options: i32: Write the integer INT into the send parcel. s16: Write the UTF-16 string STR into the send parcel. 

Я запустил service list и он вернулся с 78 услугами для моего устройства, включая isms и notification и для большинства служб напечатает то, что кажется пространством имен ( com.android.internal.telephony.ISms для isms и android.app.INotificationManager для notification ). Как я могу использовать эту информацию, чтобы узнать, что я могу сделать с каждой из этих служб?

Solutions Collecting From Web of "Где найти информацию о команде оболочки «service call» для Android?"

Вот мой пост о вызовах сервисов Android из оболочки ADB . Он включает небольшой скрипт bash, который я использую, чтобы автоматически загрузить правильную версию исходного кода службы для моего конкретного устройства, а затем проанализировать его, чтобы узнать коды транзакций для всех методов.

Мой первый ответ здесь, поэтому я надеюсь, что это будет полезно для вас.

Чтобы объяснить эту небольшую загадку, позвольте мне использовать android 4.3.1. Эта ссылка может быть существенной в вашем случае. Прокрутите вниз код Java до строки 669. Ожидается, что блок транзакций строго связан с сервисом com.android.internal.telephony.ISms и, возможно, вашим ответом, что вы можете сделать больше.

В вашем случае вы вызываете TRANSACTION_sendText. Объяснение приведено в строке 673, где вы можете найти

 static final int TRANSACTION_sendText = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); 

Последняя часть кода состоит из цифры «4». Каждый номер транзакции + 1 = правильный. Вот почему service call isms 5 отвечает за sendText а не за sendMultipartText .

Это же правило применяется ко всем услугам.

Я уверен, что вы узнаете, как проверить транзакции для службы уведомлений сейчас. Хорошо повеселиться.