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

Rin*_*eri 126 android uninstall adb

我已经adb运行并且设备在调试模式下连接到我的系统,

我想使用意图启动卸载应用程序 adb shell am start <INTENT>

我不想卸载使用adb uninstall com.company.apppackage,我甚至不想使用它adb shell pm uninstall com.company.apppackage

如何发送android.intent.action.DELETE针对特定包的操作意图,允许用户查看提示并卸载程序?

小智 215

在cmd中使用此命令:

adb shell pm uninstall -k com.packagename

例如:

adb shell pm uninstall -k com.fedmich.pagexray
Run Code Online (Sandbox Code Playgroud)

-k标志告诉包管理器保持缓存和数据目录,即使应用程序被删除.如果要进行干净卸载,请不要指定-k.

  • @Johnny_D -k标志告诉包管理器保持缓存和数据目录,即使应用程序被删除.如果要进行干净卸载,请不要指定-k. (31认同)
  • 我更喜欢这个答案.因为,有了这个,您将无法获得取消删除确认对话框. (8认同)
  • @joctee,我也是,但问题明确表示他们不想使用意图卸载. (2认同)
  • 在两个不同的设备上没有为我工作,不知道为什么 (2认同)
  • 尝试使用此命令时,我一直收到**Failure**消息. (2认同)

pca*_*ans 177

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

adb shell am start -a android.intent.action.DELETE -d package:<your app package>
Run Code Online (Sandbox Code Playgroud)

  • -d表示数据.-a意味着行动.您正在启动一个Intent,其操作为"Delete",数据为"package:your app package".这将启动负责卸载软件包的活动,并尝试卸载数据中提供的软件包.可以使用"adb shell am"命令找到文档. (11认同)
  • 你能告诉我-d package:<你的app包>代表什么?有文件吗? (2认同)
  • 这不适用于系统应用程序。会出现提示对话框,但不会卸载该应用程序。 (2认同)

Fir*_*ord 12

使用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"
Run Code Online (Sandbox Code Playgroud)

将PACKAGE替换为已安装的用户应用程序的包名称.应用程序不能是设备管理员,以使命令成功运行.所有这些命令都需要用户确认删除应用程序.

通过使用检查am的使用情况,可以知道所述命令的细节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
Run Code Online (Sandbox Code Playgroud)

除其他外,它向我展示了在后台传递的意图的有用细节.例:

intent={act=android.intent.action.DELETE dat=package:com.bartat.android.elixir#com.bartat.android.elixir.MainActivity flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity}
Run Code Online (Sandbox Code Playgroud)

在这里,您可以看到动作,数据,标志和组件 - 足够的目标.


stt*_*taq 6

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

adb -s <device-serial> shell pm uninstall <app-package-name>
Run Code Online (Sandbox Code Playgroud)

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

adb devices -l
Run Code Online (Sandbox Code Playgroud)

这将为您提供附加设备的列表.左列显示设备序列号.


Luk*_*ski 5

我假设您developer mode在您的 android 设备上启用并且您已连接到您的设备并且您拥有 shell 访问权限 ( adb shell)。

完成此操作后,您可以使用此命令卸载应用程序pm uninstall --user 0 <package.name>0 是 root id - 这样你就不需要太 root 你的设备。

这是我在华为 P110 lite 上的操作示例

# gain shell access
$ adb shell

# check who you are
$ whoami
shell

# obtain user id
$ id
uid=2000(shell) gid=2000(shell)

# list packages
$ pm list packages | grep google                                                                                                                                                         
package:com.google.android.youtube
package:com.google.android.ext.services
package:com.google.android.googlequicksearchbox
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.google.android.apps.docs.editors.sheets
package:com.google.android.configupdater
package:com.google.android.marvin.talkback
package:com.google.android.apps.tachyon
package:com.google.android.instantapps.supervisor
package:com.google.android.setupwizard
package:com.google.android.music
package:com.google.android.apps.docs
package:com.google.android.apps.maps
package:com.google.android.webview
package:com.google.android.syncadapters.contacts
package:com.google.android.packageinstaller
package:com.google.android.gm
package:com.google.android.gms
package:com.google.android.gsf
package:com.google.android.tts
package:com.google.android.partnersetup
package:com.google.android.videos
package:com.google.android.feedback
package:com.google.android.printservice.recommendation
package:com.google.android.apps.photos
package:com.google.android.syncadapters.calendar
package:com.google.android.gsf.login
package:com.google.android.backuptransport
package:com.google.android.inputmethod.latin

# uninstall gmail app
pm uninstall --user 0 com.google.android.gms
Run Code Online (Sandbox Code Playgroud)