The real problem with
service call is that transaction codes are not only undocumented, but also not guaranteed to be stable — they can be silently changed between Android versions. Because of this,
service call commands should never be used except for private debugging, when you know what Android version is used.
FIRST_CALL_TRANSACTION = 1, so the actual transaction code which should be used in the
service call phone command is the number seen in the source plus 1.)
Note that in the new version
TRANSACTION_supplyPuk was inserted in the middle, and all following codes are now shifted by 1. Anything that used
service call phone to perform those transaction will horribly break when used on Android 4.2.2 — the same codes will result in calling completely different methods, possibly with disastrous results.