诸如Link2SD和Titanium Backup之类的应用程序可以“冻结”其他应用程序,即在不删除它们的情况下将其禁用。这些应用程序如何实现这一目标?

#1 楼

Titanium Backup等仅使用内置的Package Manager (pm)冻结应用程序。 pm具有一项功能,可以阻止应用程序运行并在启动器中显示。要使用它,Titanium Backup等请执行以下命令:


pm disable {package_name}


您可以自己冻结应用程序而无需使用专用的冷冻机应用程序。只需在Terminal Emulator或ADB Shell中使用上述命令即可。例如,如果要冻结Stock Web Browser,请打开Terminal Emulator并使用su命令切换到root用户。然后,执行# pm disable com.android.browser
将返回#Package com.android.browser new state: disabled。完成!
重新启动启动器(某些设备可能需要重新启动)才能看到应用程序图标。

要解冻应用程序,只需在命令中将disable替换为enable

评论


这与此处描述的kill -STOP,kill -CONT命令相同吗? linuxpoison.blogspot.com/2007/11/…

– NoBugs
13年4月14日在20:16

@NoBugs重新启动设备。某些设备需要此功能才能完全禁用应用程序。是的,这不是杀死命令。

–user3303
13年4月15日在1:08

对。有时pm disable仅说“ killed”,然后该过程立即再次启动。 kill -STOP pid更好。您可以在ps输出中看到哪些已停止。

– NoBugs
13年5月2日在14:30

#2 楼

我发现了pm disable的工作原理:

如果运行cat /system/bin/pm,它会给出:从Java调用它-只是在没有用户应用程序可以直接访问的根上下文中。

您可以使用

# 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 "$@"


#3 楼

在Unix系统中,文件具有3个授权:读取,写入和执行。

(适用于3类人员:文件的所有者(通常是文件的创建者),一组人以及其他所有人,但超出主题范围。)

如果删除文件的执行授权,则无法再启动(执行)该文件。

评论


你好dralpuop。 Android应用不是二进制文件,因此添加或删除可执行权限不会影响它们的执行。

–Firelord♦
19年11月22日在6:09

Android是System 5 Unix,其中(例如)shell脚本不是二进制文件,但是添加或删除可执行文件权限却有所不同。

– ftpo
19年11月22日在22:03

通过将shell脚本直接作为参数传递给解释器,可以在不设置可执行位的情况下执行shell脚本,因此对于shell脚本或应用程序没有任何区别。顺带一提,问题与Android应用有关,而不与Shell脚本有关。

–Firelord♦
19年11月22日在22:38



尝试使用此资源来了解应用程序如何在Android中运行。 github.com/dogriffiths/HeadFirstAndroid/wiki/…

–Firelord♦
19年11月22日在22:40

除此之外,应用程序在packages.xml中被标记为禁用,并且在dumpsys软件包中报告禁用状态。只需更改其文件权限就不会导致这种情况。

– Izzy♦
20-09-22在6:44