संक्षेप में
सेवा कॉल कमांड से संबंधित कोड केवल फ़ंक्शन और ऑर्डर के तर्क हैं, जिस पर फ़ंक्शन उस सेवा की सहायता फ़ाइल में होता है। यह एक सिंटैक्स है
service call <your_service_name> <number at which the function appears in your_service_name.aidl> <type of the argument like i32 or i64> <argument>
विस्तार से
मैंने इसके बारे में जानने के लिए बहुत सारी समस्याओं का सामना किया और इसलिए मैं क्लिपबोर्ड सेवा की मदद से समाधान साझा करूंगा।
सबसे पहले आपको उस सेवा के बारे में जानना
होगा जिसमें आप रुचि रखते हैं - इसके लिए आपको उन सभी सेवाओं को देखना होगा जो टाइपिंग के लिए विशेष रूप से एंड्रॉइड सिस्टम के लिए हैं।
adb shell service list
यहाँ आपको क्या मिलेगा -
.
.
.
59 ethernet: [android.net.IEthernetManager]
60 wifip2p: [android.net.wifi.p2p.IWifiP2pManager]
61 rttmanager: [android.net.wifi.IRttManager]
62 wifiscanner: [android.net.wifi.IWifiScanner]
63 wifi: [android.net.wifi.IWifiManager]
64 overlay: [android.content.om.IOverlayManager]
65 netpolicy: [android.net.INetworkPolicyManager]
66 netstats: [android.net.INetworkStatsService]
67 network_score: [android.net.INetworkScoreService]
68 textservices: [com.android.internal.textservice.ITextServicesManager]
69 network_management: [android.os.INetworkManagementService]
70 clipboard: [android.content.IClipboard]
71 statusbar: [com.android.internal.statusbar.IStatusBarService]
.
.
.
जैसा कि मुझे क्लिपबोर्ड सेवा में दिलचस्पी है, यहां बताया गया है कि यह कैसा दिखता है
70 clipboard: [android.content.IClipboard]
तो यहाँ से हम संक्षेप में बता सकते हैं कि सेवा का नाम क्लिपबोर्ड सेवा है और पैकेज पथ android.content.IClipboard है
फिर आपको पूरा रास्ता जानना होगा जहां IClipboard.aidl है।
यह जानने के लिए कि आपको IClipboard.aidl के लिए Google पर खोजना होगा।
आपको परिणामों में android.googlesource.com वेबसाइट से कुछ देखना होगा, जैसे मेरे मामले में-
https://android.googlesource.com/platform/frameworks/base.git/+/android-4.2.2_r1/core/java/android/content/IClipboard.aidl
तो + / android-4.2.2_r1 के बाद आपका रास्ता कहाँ है।
/core/java/android/content/IClipboard.aidl
जैसा कि ये सेवा कॉल कोड एंड्रॉइड सिस्टम पर निर्भर हैं, इसलिए आपको अपना एंड्रॉइड ओएस नाम जानना होगा- मेरे मामले में यह 8.1.0 है,
इसलिए मैं निम्नलिखित वेबसाइट पर जाऊंगा जहां Google वहां कोड डालता है और मेरे ओएस संस्करण का चयन करता है। पृष्ठ के लिए बाएं हाथ की ओर -
https://android.googlesource.com/platform/frameworks/base/
मेरे मामले में यह एंड्रॉइड-8.1.0_r50 है। मैं उस पर क्लिक करूंगा और फिर उसके बाद मेरा यूआरएल इस तरह दिखाई देगा
https://android.googlesource.com/platform/frameworks/base/+/android-8.1.0_r51
और फिर path_of_clipboard.aidl जोड़ने के बाद, मेरा पूरा url दिखेगा
https://android.googlesource.com/platform/frameworks/base/+/android-8.1.0_r51/core/java/android/content/IClipboard.aidl
यहाँ इंटरफ़ेस में कई तरीके होंगे। मेरे मामले में
void setPrimaryClip(in ClipData clip, String callingPackage);
ClipData getPrimaryClip(String pkg);
ClipDescription getPrimaryClipDescription(String callingPackage);
boolean hasPrimaryClip(String callingPackage);
void addPrimaryClipChangedListener(in IOnPrimaryClipChangedListener listener,
String callingPackage);
void removePrimaryClipChangedListener(in IOnPrimaryClipChangedListener listener);
/**
* Returns true if the clipboard contains text; false otherwise.
*/
boolean hasClipboardText(String callingPackage);
तो पहली विधि अर्थात setPrimaryClip के लिए कोड 1 होगा क्योंकि यह पहली जगह पर है और अंतिम विधि के लिए अर्थात hasClipboardText 7 होगा क्योंकि यह सहायक फाइल में सातवें स्थान पर होता है। इसी तरह अन्य तरीकों के लिए।
तो अगर मैं सातवीं विधि को कॉल करना चाहता हूं, तो मैं टाइप करूंगा
adb shell service call clipboard 7
जैसा कि आपने देखा होगा कि मैंने CallPackage नाम नहीं डाला है क्योंकि इसकी आवश्यकता नहीं है।
यदि विधि को तर्कों की आवश्यकता है, तो आप इसे इस उदाहरण में शो के रूप में पास कर सकते हैं।
आइए हम एक विधि मानते हैं जिसका कोड क्लिपबोर्ड में 8 है और जो इस तरह दिखता है -
getDemo(String arg1, int arg2, boolean arg3)
तो मैं इसे इस तरह से कहूंगा
adb shell call clipboard 8 s16 "first_argument" i32 12 i32 1
यहां i32 का मतलब 32 बिट पूर्णांक और स्ट्रिंग के लिए s16 है। हम उदाहरण के रूप में दिखाए गए पूर्णांक के रूप में बूलियन मान भी पास कर सकते हैं।
बूलियन पूर्णांक में 1 सच के लिए और 0 झूठे के लिए है।
TIP उस adb कमांड को निष्पादित करते समय होने वाली किसी भी त्रुटि के लिए जाँच करने के लिए logcat (android स्टूडियो में) खुला रखें।
स्रोत