Saya ingin memulai kegiatan ini dari terminal: com.android.settings.Settings$PowerUsageSummaryActivity
Saya mencoba
am start -S com.android.settings/.Settings$PowerUsageSummaryActivity
dan inilah yang saya dapatkan:
Stopping: com.android.settings
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.settings/.Settings }
Masalahnya adalah am start
perintah menghilangkan yang $PowerUsageSummaryActivity
sebagian, jadi pada dasarnya aku hanya mendapatkan standar menu "Settings" terbuka. bagaimana saya bisa membuka halaman "ringkasan penggunaan daya" khusus dari terminal?
'com.android.settings/.Settings$PowerUsageSummaryActivity'
- atau melarikan diri dari$
sejenisnyacom.android.settings/.Settings\$PowerUsageSummaryActivity
- yang merupakan hal yang biasa dilakukan pada shell ketika berhadapan dengan$
tanda - tanda literal yang tidak menunjukkan variabel?Jawaban:
Seperti yang saya tulis dalam komentar saya, ada beberapa karakter khusus yang membutuhkan perhatian ekstra ketika bekerja di shell prompt (atau dalam skrip shell). Salah satunya adalah
$
tanda, yang biasanya menunjukkan suatu variabel. Jika itu harus diambil secara harfiah, Anda harus menghindarinya (atau lampirkan seluruh string dengan tanda kutip tunggal). Aturan serupa untuk tanda kutip.Bagaimana perintah Anda akan terlihat seperti dengan melarikan diri
$
, Anda sudah dapat menemukan jawaban eldarerathis :Catat "back-slash" di depan
$
- itulah tanda keluar. Gunakan hal yang sama untuk tanda kutip atau kosong, jika perintah Anda menyertakan beberapa yang harus diambil secara harfiah, misalnyakeduanya akan melakukan hal yang sama: Membuat string menjadi parameter tunggal. Dalam contoh
am start
perintah Anda , inilah yang terjadi pada parsing:am
start
-S
com.android.settings/.Settings$PowerUsageSummaryActivity
$
, menafsirkan: variabel$PowerUsageSummaryActivity
tidak disetel, jadi kosongcom.android.settings/.Settings
Perhatikan juga bahwa jika Anda menjalankan ini langsung melalui
adb shell
, perintah melewati parsing shell dua kali, jadi Anda perlu melarikan diri atau mengutip perintah lagi , seperti ini:sumber
adb shell 'am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity'
. Tidak tahu kenapaKeluar dari
$
nama sub-kelas dan itu akan berfungsi:Pilihan lain adalah sebagai gantinya mengirim maksud bahwa layar Penggunaan Daya mendengarkan:
Anda dapat menemukan maksud dengan melihat
<action>
tag di file AndroidManifest.xml untuk "aplikasi" Pengaturan (yang dapat dilihat di GitHub ). Sebagai contoh, berikut adalah definisi aktivitas untukSettings$PowerUsageSummaryActivity
:sumber