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

adb shell命令使Android软件包卸载对话框出现,android,adb,uninstallation,Android,Adb,Uninstallation,我已运行adb,设备已以调试模式连接到我的系统 我想使用intent launch和adb shell am start卸载应用程序 我不想使用adb uninstall com.company.apppackage卸载,甚至不想使用adb shell pm uninstall com.company.apppackage 如何使用android.intent.action.DELETE发送特定软件包的intent,使用户可以看到提示并卸载程序?您可以使用以下命令从adb执行此操作: adb s

我已运行
adb
,设备已以调试模式连接到我的系统

我想使用intent launch和adb shell am start卸载应用程序

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


如何使用android.intent.action.DELETE发送特定软件包的intent,使用户可以看到提示并卸载程序?

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

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

在cmd中使用此命令:

adb shell pm卸载-kcom.packagename

例如:

adb shell pm uninstall -k com.fedmich.pagexray

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

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

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

这将为您提供所连接设备的列表。左列显示设备序列。

使用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"
用已安装用户应用的程序包名称替换程序包。应用程序不能是设备管理员,命令才能成功运行。所有这些命令都需要用户确认才能删除应用程序

通过使用adb shell am检查am的使用情况,可以了解所述命令的详细信息

我使用(使用任何等效的应用程序)获得了有关这些命令的信息。我用它来显示PackageInstaller应用程序(安装和删除应用程序时看到的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}

在这里,您可以看到操作、数据、标志和组件-足以实现目标。

在我的例子中,我做了一个
adb shell pm list packages
,首先查看安卓设备或模拟器中安装的包/应用程序是什么,然后在找到所需的包/应用程序后,我执行了一个
adb shell pm卸载-k com.package.name

我假设您在android设备上启用了
开发者模式
,并且您已连接到设备,并且您具有shell访问权(
adb shell

完成此操作后,您可以使用以下命令卸载应用程序
pm uninstall--user 0
0是根id-这样您就不需要在设备上设置太多的根

下面是我在华为P110 lite上的一个示例
运行@neverever415我得到的答案:

失败[删除\失败\内部\错误]

在本例中,请检查您是否编写了正确的包名,可能是调试版本,如
com.package\u name.debug

adb shell pm uninstall com.package_name.debug

或者参见。

您能告诉我-d package:代表什么吗?有任何文件吗?-d表示数据-a意味着行动。您正在启动一个意图,操作为“删除”,数据为“包:您的应用程序包”。这将启动负责卸载程序包的活动,并尝试卸载数据中提供的程序包。可以使用“adb shell am”命令找到文档。否,如果您的应用程序包含激活的DevicePolicyManager,则必须先手动禁用它。上面的命令显示手机上的删除此应用程序确认对话框。改用
adb shell pm uninstall-k com.packagename
。这不适用于系统应用程序。提示对话框会出现,但应用程序不会被卸载。我更喜欢这个答案。因为,使用此对话框,您将无法获得“取消删除确认”对话框。@joctee,我也是,但问题明确指出,他们不想使用intent卸载。@Lohoris,已使其正常工作。。确保删除neverever上的“+”answer@Johnny_Dk标志告诉包管理器保留缓存和数据目录,即使应用程序已被删除。如果您想要干净的卸载,请不要指定-k。尝试使用此命令时,我会不断收到失败消息。我知道这个问题很老,所以我的答案可能不太相关。但它与当今大多数用户使用的Android版本完全相关。
--user 0
以root用户身份执行删除非常有用
# 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
adb shell pm uninstall com.package_name.debug