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 -a Android.intent.action.DELETE -d package:<your app package>
Cmdでこのコマンドを使用します。
adb Shell pm uninstall -k com.packagename
例えば:
adb Shell pm uninstall -k com.fedmich.pagexray
-k
フラグは、アプリが削除されても、キャッシュとデータディレクトリを保持するようにパッケージマネージャに指示します。クリーンアンインストールが必要な場合は、-k
を指定しないでください。
ADBを使用すると、次の3つのコマンドのいずれかを使用できます。
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をインストールしたユーザーアプリのパッケージ名に置き換えます。コマンドを正常に機能させるには、アプリをデバイス管理者にしないでください。これらのコマンドはすべて、アプリを削除するためにユーザーの確認を要求します。
上記コマンドの詳細は、adb Shell am
を使用して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}
ここでは、アクション、データ、フラグ、およびコンポーネントを見ることができます - 目標には十分です。
上記の答えはうまくいきますが、コンピュータに複数のデバイスが接続されている場合は、次のコマンドを使用してそれらの1つからアプリを削除できます。
adb -s <device-serial> Shell pm uninstall <app-package-name>
デバイスのシリアル番号を調べたい場合は、次のコマンドを使用してください。
adb devices -l
これにより、接続されているデバイスの一覧が表示されます。左の列はデバイスのシリアル番号を示しています。
私の場合は、最初に私のAndroidデバイスまたはエミュレータにインストールされているパッケージ/アプリが何であるかを確認するためにadb Shell pm list packages
を実行し、次に目的のパッケージ/アプリを見つけたらadb Shell pm uninstall -k com.package.name
を実行します。
私はあなたがあなたのAndroidデバイスでdeveloper mode
を有効にし、あなたがあなたのデバイスに接続されていて、あなたがシェルアクセス(adb Shell
)を持っていると仮定します。
これが完了したら、このコマンドpm uninstall --user 0 <package.name>
でアプリケーションをアンインストールできます。 は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