我已经运行了adb
,并且设备已连接到我的电脑的调试模式,
我想要使用adb shell am start <INTENT>
启动intent卸载应用程序。
我不想使用adb uninstall com.company.apppackage
进行卸载,也不想使用adb shell pm uninstall com.company.apppackage
进行卸载。
如何发送带有android.intent.action.DELETE
操作的意图来针对特定包允许用户看到提示并卸载程序?
我已经运行了adb
,并且设备已连接到我的电脑的调试模式,
我想要使用adb shell am start <INTENT>
启动intent卸载应用程序。
我不想使用adb uninstall com.company.apppackage
进行卸载,也不想使用adb shell pm uninstall com.company.apppackage
进行卸载。
如何发送带有android.intent.action.DELETE
操作的意图来针对特定包允许用户看到提示并卸载程序?
在命令提示符(cmd)中使用以下命令:
adb shell pm uninstall -k com.packagename
例如:
adb shell pm uninstall -k com.fedmich.pagexray
-k
参数告诉包管理器在应用程序被移除后保留缓存和数据目录。如果你想要干净的卸载,请不要使用-k
参数。
你可以使用以下命令通过adb来完成:
adb shell am start -a android.intent.action.DELETE -d package:<your app package>
adb shell pm uninstall -k com.packagename
命令。 - ViliusK使用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"
将PACKAGE替换为已安装用户应用程序的包名。该应用程序不得是设备管理员,以便命令能够成功运行。这些命令都需要用户确认才能删除应用程序。
可以通过检查am的用法使用adb shell am
来了解所述命令的详细信息。
我使用Elixir 2(使用任何等效应用程序)获取了有关这些命令的信息。我用它显示了软件包安装程序应用程序的活动(即您在安装和卸载应用程序期间看到的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 -s <device-serial> shell pm uninstall <app-package-name>
如果你想查找设备序列号,可以使用以下命令:
adb devices -l
开发者模式
,并且已连接到设备并具有Shell访问权限(adb shell
)。pm uninstall --user 0 <package.name>
。 0是根id,这样您就不需要对设备进行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
--user 0
以 root 权限执行删除操作非常有用。 - bw_üeziadb shell pm list packages
命令,首先查看已安装在我的 Android 设备或模拟器上的应用程序包,然后找到想要卸载的应用程序包后,执行 adb shell pm uninstall -k com.package.name
命令进行卸载。在这种情况下,请检查您是否输入了正确的包名,也许它是一个调试版本,例如失败 [DELETE_FAILED_INTERNAL_ERROR]
com.package_name.debug
:adb shell pm uninstall com.package_name.debug