我已经adb
运行,并且设备以调试模式连接到我的系统,
我想使用以下意图启动来卸载应用程序: adb shell am start <INTENT>
我不想使用进行卸载adb uninstall com.company.apppackage
,即使使用也不希望这样做adb shell pm uninstall com.company.apppackage
如何发送android.intent.action.DELETE
针对特定程序包的意图操作,以允许用户查看提示并卸载程序?
我已经adb
运行,并且设备以调试模式连接到我的系统,
我想使用以下意图启动来卸载应用程序: adb shell am start <INTENT>
我不想使用进行卸载adb uninstall com.company.apppackage
,即使使用也不希望这样做adb shell pm uninstall com.company.apppackage
如何发送android.intent.action.DELETE
针对特定程序包的意图操作,以允许用户查看提示并卸载程序?
Answers:
您可以使用以下命令从adb中进行操作:
adb shell am start -a android.intent.action.DELETE -d package:<your app package>
adb shell pm uninstall -k com.packagename
代替。
在cmd中使用以下命令:
adb shell pm卸载-k com.packagename
例如:
adb shell pm uninstall -k com.fedmich.pagexray
该-k
标志告诉程序包管理器保留高速缓存和数据目录,即使该应用程序已删除。如果您想进行干净的卸载,请不要指定-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"
将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
除其他外,它向我展示了后台传递的意图的有用细节。例:
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
先查看Android设备或仿真器中安装了哪些软件包/应用程序,然后在找到所需的软件包/应用程序后执行adb shell pm uninstall -k com.package.name
。
我假设您developer mode
在android设备上启用了该功能,并且已连接到该设备,并且具有shell访问权限(adb shell
)。
完成此操作后,您可以使用此命令卸载应用程序pm uninstall --user 0 <package.name>
。0是root 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
执行删除操作的根是非常有用的