Bagaimana cara membekukan aplikasi bekerja secara teknis?

22

Aplikasi seperti Link2SD dan Titanium Backup dapat "membekukan" aplikasi lain, yang menonaktifkannya tanpa menghapusnya. Apa yang dilakukan aplikasi ini untuk mencapai ini?

Erik
sumber

Jawaban:

28

Titanium Backup dll hanya menggunakan built-in Package Manager (pm)untuk membekukan aplikasi. pmmemiliki fitur untuk mencegah aplikasi agar tidak muncul & muncul di Peluncur. Untuk menggunakannya, Titanium Backup dll jalankan perintah berikut:

pm nonaktifkan {package_name}

Anda dapat membekukan aplikasi sendiri tanpa menggunakan aplikasi freezer khusus. Cukup gunakan perintah di atas di Terminal Emulator atau ADB Shell.

Misalnya, jika Anda ingin membeku Stock Web Browser, buka Terminal Emulator& beralih ke root menggunakan superintah. Kemudian, jalankan # pm disable com.android.browser.
Itu akan kembali #Package com.android.browser new state: disabled. Selesai!
Nyalakan kembali Peluncur Anda (beberapa perangkat mungkin memerlukan reboot) untuk melihat ikon aplikasi hilang.

Untuk mencairkan aplikasi, cukup ganti disabledengan enabledi perintah.

Android Quesito
sumber
Apakah ini sama dengan perintah kill -STOP, kill -CONT yang dijelaskan di sini? linuxpoison.blogspot.com/2007/11/...
NoBugs
@NoBugs Nyalakan ulang perangkat Anda. Beberapa perangkat memerlukan ini untuk sepenuhnya menonaktifkan aplikasi. Dan ya, ini bukan perintah membunuh.
Android Quesito
Kanan. Terkadang pm disablehanya mengatakan "terbunuh", maka proses segera dimulai kembali. kill -STOP pid lebih baik. Anda dapat melihat mana yang dihentikan, dalam psoutput.
NoBugs
13

Saya menemukan cara pm disablekerjanya:

Jika Anda menjalankan cat /system/bin/pm, itu memberi:

# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"

Jadi ternyata itu sama dengan PackageManager yang kami gunakan dari Jawa, itu menyebutnya - hanya dalam konteks root yang tidak dapat diakses langsung oleh aplikasi pengguna.

Anda BISA memeriksa apakah ada yang beku, menggunakan

getPackageManager().getApplicationEnabledSetting( the package name ) ==
        getPackageManager().COMPONENT_ENABLED_STATE_DISABLED)
NoBugs
sumber
-4

Dalam sistem Unix, file memiliki 3 otorisasi: membaca, menulis, dan mengeksekusi.

(Untuk 3 kategori orang: pemilik file [biasanya pembuatnya], sekelompok orang, dan orang lain, tetapi tidak termasuk subjek).

Jika Anda menghapus otorisasi eksekusi file, itu tidak dapat diluncurkan (dieksekusi) lagi.

dralpuop
sumber
Halo dralpuop. Aplikasi Android bukan binari, jadi menambah atau menghapus izin yang dapat dieksekusi tidak membuat perbedaan dalam pelaksanaannya.
Firelord
Android adalah System 5 Unix, di mana (misalnya) skrip shell bukan binari, namun menambahkan atau menghapus izin yang dapat dieksekusi membuat perbedaan.
dralpuop
Script shell dapat dijalankan tanpa bit yang dapat dieksekusi yang ditetapkan dengan meneruskannya sebagai argumen ke intepreter secara langsung, sehingga tidak ada perbedaan untuk skrip shell, atau untuk aplikasi. Pertanyaan dan pertanyaannya adalah tentang aplikasi Android, bukan tentang skrip shell.
Firelord
1
Coba sumber ini untuk mengetahui bagaimana aplikasi dijalankan di Android. github.com/dogriffiths/HeadFirstAndroid/wiki/…
Firelord