টার্মিনালের মাধ্যমে কোনও নির্দিষ্ট অ্যাপের ক্রিয়াটি কীভাবে চালানো যায়?


13

এসএসএইচ এর মাধ্যমে আমার অ্যান্ড্রয়েড অ্যাপটি একটি দূরবর্তী কম্পিউটার থেকে চালানো দরকার, তবে আমি কোনও কমান্ড-লাইন বিশেষজ্ঞ নই, তাই আমি জানতে চাই: কোনও অ্যাপ্লিকেশানের নির্দিষ্ট ক্রিয়াকলাপটি কীভাবে চালানো যায় ? (কেবল এটি খুলুন না) যা বোঝায়: কোনও অ্যাপের সম্ভাব্য ক্রিয়াকলাপের সঠিক সিনট্যাক্সটি কীভাবে জানবেন?

উদাহরণস্বরূপ: আমি আমার কম্পিউটার থেকে আমার ফোনে একটি অডিও-রেকর্ডিং অ্যাপ শুরু করতে চাই এবং দূর থেকে রেকর্ডিং শুরু করতে চাই। এটা কি সম্ভব?

ধন্যবাদ, আন্দ্রে

উত্তর:


12

এটা ব্যবহার কর:

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

একটি অ্যাপ্লিকেশন নিয়ন্ত্রণ করতে, আপনি সঠিক মান করা হবে <package_name>এবং <full_class_name>কমান্ড হবে। উদাহরণস্বরূপ, আপনি com.google.gmail/com.google.gmail.check_mailকমান্ডের শেষ অংশ হিসাবে (হাইপোথিটিক্যাল নামগুলি) ব্যবহার করতে পারেন ।

কোনও অ্যাপ্লিকেশনটির প্যাকেজের নাম নেওয়া সহজ , তবে ক্রমের নাম শ্রেণি পাওয়া যায় না। দুটি সমস্যা আছে:

  1. অনেক অ্যাপ বিকাশকারী ক্লাসের তথ্য ব্যক্তিগত রাখেন।

  2. সমস্ত বিকাশকারী স্মার্ট মডিউলার প্রোগ্রামিং করে না। একাধিক ক্লাসে এমন একটি অ্যাপ্লিকেশন ভাগ করার ভাল অভ্যাস যা ইন্টেন্ট দ্বারা চালিত হতে পারে তবে সমস্ত বিকাশকারী স্মার্ট নয়।

1 ম সমস্যার সমাধান: অ্যাপকেটোল ব্যবহার করে অ্যাপ্লিকেশনটি ডিসকম্পাইল করুন এবং সমস্ত তথ্য দেখুন। এছাড়াও অন্যান্য উপায় রয়েছে, তবে এটি সর্বদা কার্যকর পদ্ধতি (যদি অ্যাপ্লিকেশনটি এসডিকে পরিবর্তে এনডিকে ভিত্তিক না হয়)।

২ য় সমস্যার সমাধান: কিছুই নয়।

চিন্তা করবেন না, বেশিরভাগ জনপ্রিয় অ্যাপ্লিকেশনগুলি সেরা প্রোগ্রামিং অনুশীলন অনুসরণ করে এবং সেগুলি সরবরাহ Public APIকরে যা থেকে আপনি ক্লাসের তথ্য পেতে পারেন।


আপনি পরামিতি উপর কিছু ব্যাখ্যা যোগ করা যায়নি <package_name>এবং <full_class_name>, এবং কিভাবে তাদের প্রাপ্ত কিভাবে? আমার কাছে কমপক্ষে পরেরটি পরিষ্কার নয়।
ইজি

@ আইজি ব্যাখ্যাটি যুক্ত করেছেন ... উত্তরটি আবার পর্যালোচনা করুন।
অ্যান্ড্রয়েড কুইসিতো

ধন্যবাদ! আমার কাছ থেকে +1: ডি কমপ্যাক্ট এবং বুঝতে সহজ। আমি কিছু লিঙ্ক যুক্ত করার স্বাধীনতা নেব, যদি আপনি কিছু মনে করেন না, কারণ apktools(অ-বিকাশকারীরা অন্যথায় এটি এসডির অংশ বলে মনে করতে পারে এবং হারিয়ে যেতে পারে;)
ইজজি

@Izzy এখানে আমার সমস্যা: আমি সেটিংস অ্যাপ্লিকেশান এর এই কার্যকলাপ লঞ্চ করতে অসমর্থ আছি: com.android.settings/.Settings$StorageSettingsActivity। এটি নিজে চেষ্টা করো. আসলে, $চিহ্ন পরে স্ট্রিং কি ? সেটিংস ক্রিয়াকলাপে কি এটি একটি সাব-ক্লাসের মতো?
গোকুল এনসি

@ গোকুলএনসি আপনার পুরো জিনিসটি (একক উদ্ধৃতি) উদ্ধৃত করার প্রয়োজন $StorageSettingsActivityহতে পারে , বা একটি ভেরিয়েবল হিসাবে দেখা যেতে পারে এবং একটি খালি স্ট্রিংয়ে "প্রসারিত" হিসাবে দেখা যেতে পারে (যদি না সেই নামটি দ্বারা কোনও ভেরিয়েবল সংজ্ঞায়িত থাকে)।
ইজজি

9

শচীন শেখর যেমন বলেছিলেন, আপনার অবশ্যই নিম্নলিখিত আদেশটি ব্যবহার করতে হবে:

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

একটি দৃ concrete় উদাহরণ দেখুন:

  • আপনার অ্যান্ড্রয়েড ডিভাইস বা যে কোনও বাজারের জায়গা থেকে APK ফাইল পাচ্ছেন
  • এই আদেশটি চালাচ্ছি:

aapt dump xmltree com.android.settings*.apk AndroidManifest.xml

আমি "টিথারিং" মেনু শুরু করতে চাই, সুতরাং আউটপুটে আমি একটি ক্রিয়াকলাপ অনুসন্ধান করি:

(...)
   E: activity (line=190)
    A: android:name(0x01010003)=".TetherSettings" (Raw: ".TetherSettings")
(...)

সুতরাং চূড়ান্ত আদেশ হ'ল:

am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings

aaptকমান্ড অংশ অ্যান্ড্রয়েড SDK এর


1
: ডি এটি পরীক্ষা করুন, এটি কবজ হিসাবে কাজ করে। এটি একটি বাস্তব জীবনের ™ ® ™ কাজের উদাহরণ।
গিলস কুইনট

2
ভাগ্য এবং কম্পিউটার বিজ্ঞান একেবারে বিপরীত। এটি একটি আপেক্ষিক পথ।
গিলস কুইনট

2
না, আপনি com.android.settingsPATH বাদ দিতে পারেন , এ কারণেই আমি বলেছিলাম এটি সম্পর্কিত। আপনার পছন্দ মতো যে কোনও অ্যাপে এটি পরীক্ষা করুন।
গিলস কুইনট

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

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