Terminalden (veya adb kabuğundan) “Ayarlar” altında listelenen bir etkinliği başlatma


13

Bu aktiviteyi terminalden başlatmak istiyorum: com.android.settings.Settings$PowerUsageSummaryActivity

denedim

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

ve elde ettiğim şey bu:

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

Sorundur am startkomut atlar$PowerUsageSummaryActivity böylece temelde sadece standart "Ayarlar" menüsü açık alıyorum, bölüm. bu "güç kullanımı özeti" sayfasını terminalden nasıl açabilirim?


2
Have yani tek tırnak içine koyarak çalıştı 'com.android.settings/.Settings$PowerUsageSummaryActivity'- veya kaçan $gibi com.android.settings/.Settings\$PowerUsageSummaryActivity- literal ile uğraşırken kabuk üzerinde yapılacak olağan şeyler hangi $işaretler değil bir değişken belirten?
Izzy

Terminalden üstte Tasker'ın RunLog etkinliğine ne dersiniz? Tasker, Günlük penceresini açmak için 3 noktalı bir menüye sahiptir.
Nicola Al.

Yanıtlar:


12

Yorumumda yazdığım gibi, kabuk komut isteminde (veya kabuk komut dosyalarında) çalışırken ekstra dikkat gerektiren bazı özel karakterler var. Bunlardan biri, $genellikle bir değişkeni gösteren işarettir. Kelimenin tam anlamıyla alınması gerekiyorsa, kaçmanız gerekir (veya tüm dizeyi tek tırnak işaretleri içine almanız gerekir). Tırnak işaretleri için benzer kurallar.

Kaçan komutunuzla komutunuz nasıl görünmeli $, zaten eldarerathis'ın cevabında bulabilirsiniz :

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

Önünde "ters eğik çizgi" dikkat edin $- bu kaçış işareti. Komutunuz kelimenin tam anlamıyla alınacak bazılarını içeriyorsa, tırnak işaretleri veya boşluklar için de aynısını kullanın;

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

her ikisi de aynı şeyi yapar: Dizeyi tek bir parametre yapmak. am startKomut örneğinizde , ayrıştırmada olan buydu:

  • komut: am
  • parametre 1: start
  • parametre 2: -S
  • parametre 3: com.android.settings/.Settings$PowerUsageSummaryActivity
    • bir $, yorumlama var: değişken $PowerUsageSummaryActivityayarlanmadı, çok boş
    • sonuç: parametre 3 com.android.settings/.Settings

Bunu doğrudan üzerinden çalıştırırsanız adb shell, komutun kabuk ayrıştırma işleminden iki kez geçtiğini, bu nedenle komuttan tekrar kaçmanız veya alıntı yapmanız gerektiğini unutmayın :

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

Oh teşekkürler! oh $ kaçmayı nasıl unutabilirim ... ben usulüne uygun
utanıyorum

Hayattaki küçük şeyler ... Gözardı edilmesi kolay :) Btw: Sorununuzu çözdüyse, cevaplardan birini "kabul edildi" olarak işaretleyin (yanındaki onay işaretini tıklayın) [ve diğerini yükseltin :)] - yani benzer bir tuzağa dokunarak diğer insanlar için açık :)
Izzy

oh onay işaretini buldum. yani bu nasıl cevap kabul
ediyorum

Her zaman açığız :) Şimdi burada ne kadar iyi çalıştığını görüyorsunuz: kelimeyi yaymak :)
Izzy

3
Bash ile benim durumumda, sadece bu çalıştı: adb shell 'am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity'. Neden bilmiyorum.
Firelord

5

$Alt sınıf adından kaçın ve çalışması gerekir:

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

Bunun yerine başka bir seçenek de Güç Kullanımı ekranının dinlediği amacı göndermektir:

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

<action>Amaçları, Ayarlar "uygulaması" ( GitHub'da görüntülenebilir ) için AndroidManifest.xml dosyasındaki etiketlere bakarak bulabilirsiniz . Örnek olarak, aşağıdakiler için etkinlik tanımı şöyledir 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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.