adb service:
root@android:/ # service 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.
root@android:/ # service list Found 74 services: 0 sip: [android.net.sip.ISipService] 1 phone: [com.android.internal.telephony.ITelephony] 2 iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo] 3 simphonebook: [com.android.internal.telephony.IIccPhoneBook] 4 isms: [com.android.internal.telephony.ISms] 5 sysoff: [android.os.ISysoffMonitor]
call: adb service call phone 2 s16 "10086"
receive: adb service call phone 6
ITelephony.aidl
interface ITelephony { 32 33 /** 34 * Dial a number. This doesn't place the call. It displays 35 * the Dialer screen. 36 * @param number the number to be dialed. If null, this 37 * would display the Dialer screen with no number pre-filled. 38 */ 39 void dial(String number); 40 41 /** 42 * Place a call to the specified number. 43 * @param number the number to be called. 44 */ 45 void call(String number); 46 47 /** 48 * If there is currently a call in progress, show the call screen. 49 * The DTMF dialpad may or may not be visible initially, depending on 50 * whether it was up when the user last exited the InCallScreen. 51 * 52 * @return true if the call screen was shown. 53 */ 54 boolean showCallScreen(); 55 56 /** 57 * Variation of showCallScreen() that also specifies whether the 58 * DTMF dialpad should be initially visible when the InCallScreen 59 * comes up. 60 * 61 * @param showDialpad if true, make the dialpad visible initially, 62 * otherwise hide the dialpad initially. 63 * @return true if the call screen was shown. 64 * 65 * @see showCallScreen 66 */ 67 boolean showCallScreenWithDialpad(boolean showDialpad); 68 /** 70 * End call if there is a call in progress, otherwise does nothing. 71 * 72 * @return whether it hung up 73 */ 74 boolean endCall(); 75 76 /** 77 * Answer the currently-ringing call. 78 * 79 * If there's already a current active call, that call will be 80 * automatically put on hold. If both lines are currently in use, the 81 * current active call will be ended. 82 * 83 * TODO: provide a flag to let the caller specify what policy to use 84 * if both lines are in use. (The current behavior is hardwired to 85 * "answer incoming, end ongoing", which is how the CALL button 86 * is specced to behave.) 87 * 88 * TODO: this should be a oneway call (especially since it's called 89 * directly from the key queue thread). 90 */ 91 void answerRingingCall(); 92 ......