出现adb shell命令来使Android包卸载对话框出现

我有ADB运行和设备连接到我的系统在debugging模式下,

我想卸载应用程序使用意图启动在ADBshell,使用am start <INTENT>

我不想卸载使用adb uninstall com.company.apppackage ,并不想通过使用下载pm uninstall com.company.apppackage

有没有什么办法,我可以使用意图的行动删除( android.intent.action.DELETE )和用户得到提示卸载一些程序。

您可以使用以下命令从adb执行此操作:

 adb shell am start -a android.intent.action.DELETE -d package:<your app package> 

在cmd中使用这个命令:

adb shell pm卸载-k com.packagename

例如:

 adb shell pm uninstall -k com.fedmich.pagexray 

-k标志告诉软件包pipe理器保留caching和数据目录,即使应用程序已被删除。 如果你想要一个干净的卸载,不要指定-k

使用ADB,您可以使用以下三个命令中的任何一个:

 adb shell am start -a android.intent.action.UNINSTALL_PACKAGE -d "package:PACKAGE" adb shell am start -n com.android.packageinstaller/.UninstallerActivity -d "package:PACKAGE" adb shell am start -a android.intent.action.DELETE -d "package:PACKAGE" 

将PACKAGEreplace为已安装的用户应用程序的软件包名称。 该应用程序不能是设备pipe理员的命令工作成功。 所有这些命令都需要用户确认才能删除应用程序。

可以通过使用adb shell am来检查上述命令的详细信息。

我得到了有关使用Elixir 2 (使用任何等效的应用程序)的命令的信息。 我用它来显示Package Installer应用程序(安装和删除应用程序期间看到的GUI)以及相关意图的活动。 你走了

我使用的另一种方法是:我尝试使用GUI卸载应用程序,直到显示最终确认。 我没有确认,但执行命令

 adb shell dumpsys activity recents # for Android 4.4 and above adb shell dumpsys activity activities # for Android 4.2.1 

除此之外,它向我展示了在后台传递的意图的有用细节。 例:

 intent={act=android.intent.action.DELETE dat=package:com.bartat.android.elixir#com.bartat.android.elixir.MainActivity flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity} 

在这里,您可以看到行动,数据,标志和组件 – 足以实现目标。

尽pipe上面的答案有效,但如果您有多台设备连接到您的计算机上,则可以使用以下命令从其中一台设备中删除应用程序:

 adb -s <device-serial> shell pm uninstall <app-package-name> 

如果您想查找设备序列,请使用以下命令:

 adb devices -l 

这会给你一个附件列表。 左栏显示设备序列号。

在我的情况下,我做一个adb shell pm list packages首先看看我的Android设备或模拟器中安装的软件包/应用程序,然后find所需的软件包/应用程序,我做一个adb shell pm uninstall -k com.package.name