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?

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.


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)

-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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.