সমস্ত "/ সিস্টেম / বিন / পরিষেবা" কলগুলির বিবরণ কোথায় পাবেন?


12

ইন একটি উত্তর আমি ব্যবহার করতে অছিয়ত ছিল service call phone 2 s16 "$number"। এটি কাজ করে, তবে service listআমি অন্যান্য দরকারী জিনিসগুলি দেখতে পাচ্ছি যেগুলি কীভাবে ব্যবহার করতে হয় তা আমি জানি না এবং সহজেই ইন্টারনেটে তথ্য খুঁজে পাই না।

আমি নিজেকে খুঁজে বের করা serviceছাড়া আর কোনও অন্তর্মুখী দেখতে পাচ্ছি না service list...

"পরিষেবা" কল এবং তাদের পরামিতিগুলির আরও সম্পূর্ণ বিবরণ কোথায় পাবেন?


1
চমৎকার প্রশ্ন ...
অ্যান্ড্রয়েড কুইসিত

উত্তর:


5

সংক্ষেপে

সার্ভিস কল কমান্ড সম্পর্কিত কোডটি কেবল সেই ক্রিয়াকলাপ এবং আদেশের আর্গুমেন্ট যা এই সেবার সহায়িকার ফাইলে ফাংশনটি ঘটে। এখানে একটি বাক্য গঠন

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]

সুতরাং এখান থেকে আমরা সংক্ষিপ্ত করতে পারি যে পরিষেবার নামটি ক্লিপবোর্ড পরিষেবা এবং প্যাকেজের পথটি অ্যান্ড্রয়েড কন্টেন্ট.আইসিপ্লাইপর্ড

তারপরে আপনাকে আইসিলিপবোর্ড.এইডল যেখানে রয়েছে তার পুরো পথটি জানতে হবে।
আপনার আইসিলিপবোর্ড.এইডল এর ​​জন্য গুগলে অনুসন্ধান করতে হবে তা জানতে।
ফলাফলগুলিতে আপনাকে অ্যান্ড্রয়েড.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 এর পরে আপনার পথটি যেখানে রয়েছে that সেই পথটি পথ_পথ_ক্লিপবোর্ড.ইডল = হতে দিন

/core/java/android/content/IClipboard.aidl

যেহেতু এই পরিষেবা কল কোডগুলি অ্যান্ড্রয়েড সিস্টেমের উপর নির্ভরশীল, তাই আপনার অ্যান্ড্রয়েড ওএস নামটি জানা দরকার-আমার ক্ষেত্রে এটি 8.1.0 হয়
তাই আমি নিম্নলিখিত ওয়েবসাইটটিতে যাব যেখানে গুগল সেখানে কোড রাখে এবং আমার ওএস সংস্করণটি আমার থেকে নির্বাচন করবে পৃষ্ঠার জন্য বাম হাত -

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 যুক্ত করার পরে, আমার সম্পূর্ণ ইউআরএল দেখতে পাবেন

https://android.googlesource.com/platform/frameworks/base/+/android-8.1.0_r51/core/java/android/content/IClipboard.aidl

এখানে ইন্টারফেসে অনেক পদ্ধতি থাকবে my আমার ক্ষেত্রে লাইক দিন

    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);

সুতরাং প্রথম পদ্ধতির কোড যেমন সেটপ্রাইমারি ক্লিপটি প্রথম স্থানে যেমন ঘটেছিল তখন 1 হবে এবং শেষ পদ্ধতির জন্য হ্যাসক্লিপবোর্ডটেক্সটটি 7 হবে কারণ এটি সহায়ক ফাইলের সপ্তম স্থানে রয়েছে। একইভাবে অন্যান্য পদ্ধতির জন্য।
সুতরাং আমি সপ্তম পদ্ধতিটি কল করতে চাইলে আমি টাইপ করব

adb shell service call clipboard 7 

আপনি হয়ত দেখেছেন যে আমি কলিংপ্যাকেজ নামটি রাখি নি কারণ এটি প্রয়োজনীয় নয়।

যদি পদ্ধতিটিতে যুক্তিগুলির প্রয়োজন হয় তবে আপনি উদাহরণ হিসাবে শো হিসাবে এটি পাস করতে পারেন।
আসুন এমন একটি পদ্ধতি ধরে নেওয়া যাক যার কোডটি ক্লিপবোর্ডে 8 এবং এটি দেখতে এরকম দেখাচ্ছে -

getDemo(String arg1, int arg2, boolean arg3)

সুতরাং আমি এটি এইভাবে কল করব

adb shell call clipboard 8 s16 "first_argument" i32 12 i32 1

এখানে আই 32 স্ট্রিংয়ের জন্য 32 বিট ইন্টিজার এবং এস 16। উদাহরণস্বরূপ আমরা বুলিয়ান মানকে পূর্ণসংখ্যা হিসাবে পাস করতে পারি।
বুলিয়ান পূর্ণসংখ্যায় 1 টি সত্য এবং 0 টি মিথ্যা বলে।

টিআইপি সেই অ্যাডবি কমান্ডটি কার্যকর করার সময় যে কোনও ত্রুটি ঘটেছে তা পরীক্ষা করতে লগক্যাটটি খোলা রাখুন (অ্যান্ড্রয়েড স্টুডিওয়ের মতো)।
উৎস


6

এর সাথে আসল সমস্যাটি service callহ'ল লেনদেনের কোডগুলি কেবল বিনা প্রতিবেদিতই নয়, স্থিতিশীল হওয়ার গ্যারান্টিযুক্তও নয় - এগুলি অ্যান্ড্রয়েড সংস্করণগুলির মধ্যে নীরবে পরিবর্তন করা যেতে পারে। এর কারণ হিসাবে, service callঅ্যান্ড্রয়েড সংস্করণটি কী ব্যবহৃত হয় তা আপনি যখন জানেন তখন ব্যক্তিগত ডিবাগিং ব্যতীত কমান্ডগুলি কখনই ব্যবহার করা উচিত নয়।

উদাহরণ:

(এখানে FIRST_CALL_TRANSACTION = 1, সুতরাং service call phoneকমান্ডটিতে ব্যবহার করা উচিত প্রকৃত লেনদেনের কোডটি উত্সটি আরও 1 তে দেখা সংখ্যা is)

মনে রাখবেন যে নতুন সংস্করণটি TRANSACTION_supplyPukমাঝখানে sertedোকানো হয়েছিল এবং নিম্নলিখিত সমস্ত কোডগুলি এখন ১ দ্বারা স্থানান্তরিত হয়েছে service call phonethose অ্যান্ড্রয়েড 4..২.২ এ ব্যবহার করার সময় এই লেনদেনগুলি করতে ব্যবহৃত যে কোনও কিছু ভয়াবহভাবে ভেঙে যাবে - একই কোডগুলি সম্পূর্ণ ভিন্ন পদ্ধতিতে কল করার ফলে ঘটবে সম্ভবত বিপর্যয়কর ফলাফল সহ।


এমন কি কিছু আছে যা তুলনায় কিছুটা উচ্চ স্তরের service call, তবুও সুপারসার কনসোল থেকে অনেক কিছু করার অনুমতি দেয়?
vi0

4

কোনও ডকুমেন্টেশন নেই। তবে অ্যান্ড্রয়েড উত্স কোডে আপনি যে সমস্ত তথ্য সন্ধান করছেন তা সন্ধান করতে পারেন। service listআপনাকে প্যাকেজের নাম দেয়। phoneসেবার জন্য তাই com.android.internal.telephony.ITelephony। আপনার অ্যান্ড্রয়েড সংস্করণে service call phoneতালিকাভুক্ত হওয়ার com/android/internal/telephony/ITelephony.javaজন্য সমস্ত সম্ভাব্য পরামিতি আপনি খুঁজে পাবেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.