टर्मिनल (या एडीबी शेल) से "सेटिंग" के तहत सूचीबद्ध एक गतिविधि शुरू करना


13

मैं इस गतिविधि को टर्मिनल से शुरू करना चाहूंगा: com.android.settings.Settings$PowerUsageSummaryActivity

मैंने कोशिश की

am start -S com.android.settings/.Settings$PowerUsageSummaryActivity

और यही मुझे मिलता है:

Stopping: com.android.settings
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.settings/.Settings }

समस्या यह है am startआदेश को छोड़ देता है$PowerUsageSummaryActivity , तो मूल रूप से हिस्सा मैं सिर्फ मानक "सेटिंग" मेनू खुला हो रही है। मैं टर्मिनल से उस विशिष्ट "पावर उपयोग सारांश" पृष्ठ को कैसे खोल सकता हूं?


2
क्या आपने इसे सिंगल कोट्स में डालने की कोशिश की है, जैसे 'com.android.settings/.Settings$PowerUsageSummaryActivity'- या इस $तरह से बचना com.android.settings/.Settings\$PowerUsageSummaryActivity- जो शेल पर करने के लिए सामान्य सामान है, जो शाब्दिक $संकेतों से भिन्न नहीं होता है?
इज़ी

टर्मिनल से शीर्ष पर खुले टास्कर्स रनलॉग गतिविधि के बारे में कैसे? टास्कर में लॉग विंडो खोलने के लिए 3 डॉट मेनू है।
निकोला अल।

जवाबों:


12

जैसा कि मैंने अपनी टिप्पणी में लिखा है, शेल प्रॉम्प्ट (या शेल स्क्रिप्ट्स) में काम करते समय कुछ विशेष पात्रों को अतिरिक्त देखभाल की आवश्यकता होती है। उनमें से एक $संकेत है, जो आमतौर पर एक चर को इंगित करता है। यदि इसे शाब्दिक रूप से लिया जाना चाहिए, तो आपको इसे भागने की जरूरत है (या एकल उद्धरण द्वारा पूरे स्ट्रिंग को संलग्न करें)। उद्धरण चिह्नों के समान नियम।

आपकी आज्ञा एक पलायन के साथ कैसे दिखनी चाहिए $, आप पहले से ही eldarerathis के उत्तर में पा सकते हैं :

shell@android:/ # am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity

"बैक-स्लैश" पर ध्यान दें $- यह भागने का संकेत है। उद्धरण चिह्नों या रिक्त स्थान के लिए समान का उपयोग करें, यदि आपकी कमांड में कुछ को शाब्दिक रूप से लिया जाना शामिल है, जैसे

myscript.sh first\ parameter\!
myscript.sh "first parameter!"

दोनों एक ही करेंगे: स्ट्रिंग को एक एकल पैरामीटर बनाना। आपके am startआदेश के उदाहरण में , पार्सिंग पर यही हुआ है:

  • आदेश: am
  • पैरामीटर 1: start
  • पैरामीटर 2: -S
  • पैरामीटर 3: com.android.settings/.Settings$PowerUsageSummaryActivity
    • एक है $, व्याख्या करना: चर $PowerUsageSummaryActivityसेट नहीं है, इसलिए खाली है
    • निष्कर्ष: पैरामीटर 3 है com.android.settings/.Settings

ध्यान दें कि यदि आप इसे सीधे चलाते हैं adb shell, तो कमांड दो बार शेल पार्सिंग से गुजरती है, इसलिए आपको इस तरह से कमांड को फिर से भागने या उद्धृत करने की आवश्यकता है :

user@desktop:~$ adb shell am start -n 'com.android.settings/.Settings\$PowerUsageSummaryActivity'

धन्यवाद! ओह मैं $ बचना कैसे भूल सकता हूँ ... मैं विधिवत शर्मिंदा हूँ :)
जूनियो

जीवन में छोटी चीजें ... आसान नजरअंदाज :) Btw: अगर वह आपकी समस्या हल हो गई है, तो उत्तरों में से एक को "स्वीकृत" (इसके बगल में चेकमार्क पर क्लिक करके) चिह्नित करने पर विचार करें [और दूसरे को उभारें]] - तो यह अन्य लोगों को एक ऐसी ही जाल में :) दोहन करने के लिए स्पष्ट है
इज़ी

ओह, मुझे चेकमार्क मिला। तो यह है कि मैं कैसे जवाब स्वीकार करता हूं ... धन्यवाद यह पहली बार है जब मैं
स्टैकएक्सचेंज का

तुम हो स्वागत कभी भी :) अब आप कितनी अच्छी तरह यह यहां काम करता है देखें: प्रसार शब्द :)
इज़ी

3
बैश के साथ, मेरे मामले में, केवल इसने काम किया adb shell 'am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity':। पता नहीं क्यों।
Firelord

5

एस्केप $उप-वर्ग के नाम पर है और यह काम करना चाहिए:

shell@android:/ # am start -S com.android.settings/.Settings\$PowerUsageSummaryActivity
Starting: Intent { cmp=com.android.settings/.Settings$PowerUsageSummaryActivity }
shell@android:/ #

इसके बजाय एक अन्य विकल्प यह है कि पॉवर यूसेज स्क्रीन को जिस आशय से सुना जाता है, उसे भेजें:

shell@android:/ # am start -a android.intent.action.POWER_USAGE_SUMMARY

आप <action>सेटिंग "एप्लिकेशन" (जिसे GitHub पर देखा जा सकता है ) के लिए AndroidManifest.xml फ़ाइल में टैग देखकर इंटेंट्स पा सकते हैं । एक उदाहरण के रूप में, यहाँ के लिए गतिविधि परिभाषा है Settings$PowerUsageSummaryActivity:

<activity android:name="Settings$PowerUsageSummaryActivity"
        android:label="@string/power_usage_summary_title"
        android:uiOptions="none"
        android:taskAffinity=""
        android:excludeFromRecents="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.action.POWER_USAGE_SUMMARY" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="com.android.settings.SHORTCUT" />
    </intent-filter>
    <!-- Some other stuff here... -->
</activity>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.