ADB経由でシステムアプリを有効または無効にする


49

システムアプリを有効/無効にするadbコマンドはありますか?

ありがとう

回答:


67

はい。コマンドはpm disable <package name>です。これを行うには、rootになる必要があります。

シェルを開き、ルートを取得します。

PC> adb shell
shell@hammerhead:/ $ su

有効なアプリをすべてリストし、「計算機」でフィルタリングします。

root@hammerhead:/ # pm list packages -e | grep 'calculator'
package:com.android.calculator2

アプリを無効にする:

root@hammerhead:/ # pm disable com.android.calculator2
Package com.android.calculator2 new state: disabled

無効なアプリをすべてリスト:

root@hammerhead:/ # pm list packages -d
package:com.android.calculator2
package:com.google.android.apps.inputmethod.hindi
package:jp.co.omronsoft.iwnnime.ml
package:com.google.android.inputmethod.pinyin
package:com.google.android.inputmethod.korean
package:com.google.earth
root@hammerhead:/ #

注目に値するその他の事項:

  1. 私のテストでは、この方法で無効にされたアプリは、[設定]> [アプリ]リストから完全に消えます。「無効」タブには表示されないようです。
  2. でアプリを再度有効にすることができますpm enable <package name>。実際、私の経験では、これがそれらを再度有効にする唯一の方法のようです。

無効にしたときに、選択したアプリが隠れないようにすることは可能ですか?
アンドロイド開発者14

1
@androiddeveloperいいえ。UI を含め、アプリを完全に隠すことは、その背後にある全体的なアイデアです。
イジー

@Izzyなるほど。無効にすることなく、逆の操作、つまり単に非表示にすることは可能ですか?
アンドロイド開発者14年

理論的にはそう思う。しかし、私はそれを行う方法がわかりません。ストアには、インストール時にどこにも表示されない「アプリ」がいくつかあります(たとえば、他のアプリで追加設定を提供したり、特定のサービスの「アカウントマネージャー」などの「見えないサービス」を提供したりする)どういうわけか。しかし、私はそれがアプリなどで行われるのでManifestはないかと思っています(私はAndroid開発者ではないので、わかりません)。
イジー

プレイストアページでアプリを有効にすることができます。
情報画面

7

@eldarerathisの回答に加えて、特定のユーザーに対してアプリを無効にすることができます。この方法を使用して、ユーザー設定画面にリストされていない一部のアプリを制限付きユーザーから削除しました。からのすべてのコマンドadb shell。変更するにはルートアクセスが必要です。

まず、ユーザーのIDを取得します。

$ pm list users
Users:
  UserInfo{0:Alice:13} running
  UserInfo{11:Bob:18} running

それから

$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager new state: disabled-user

再度有効にするには

# pm enable --user 11 com.cyanogenmod.filemanager

この例では、Aliceはファイルマネージャーを使用できますが、Bobは使用できません。

hide代わりに同様のことを行うことができますdisable。どちらが最適かはわかりませんが、この回答をご覧ください。逆のことhideですunhide(有効にするには再起動が必要な場合がありますunhide)。

パッケージをリストするには、を使用しますpm list pacakges --user 11。与え-eリストにパッケージを有効または-d無効にしたものを見たい場合。隠しパッケージのフィルターはないようです。

FWIW、Amazon Fire(KFFOWI)上のCM 12.1でLollipopで上記を試しました。


3

これは、アプリがシステムアプリであるかサードパーティアプリ(ユーザーがインストール済み)であるかに関係なく機能するはずです。


アプリのパッケージ名を決定する」の私の答えを参照して、関連するアプリのパッケージ名を取得し、シェルを使用してこれらのコマンドを実行します(ルートアクセスが必要です)。

adbシェル
す
pm disable PACKAGE#アプリを無効にし、[設定]-> [アプリケーション]で非表示にします 
pm hide PACKAGE#代替; Android Lollipop以降用
cmd package suspend PACKAGE#代替; パッケージはランチャーおよび設定アプリに表示されたままですが、使用できません。デバイス管理の機能

PACKAGE アプリのパッケージ名を参照します

アプリを元に戻すには、上記のコマンドでdisableenableにhideunhideに、サスペンドunsuspendに置き換えて、root権限で実行します。

Android KitKat以上を使用していて、rootアクセスがない場合、PCでを使用してこのコマンドを実行します。

Android KitKatのadb shell pm block PACKAGE#
adb shell pm hideパッケージ#Android Lollipopのみ
adb shell pm disable-user PACKAGE#「pm hide」の代替; Android Lollipop以上の場合。これは、設定アプリでアプリを無効にするのと同じように機能します

アプリを元に戻すには:

Android KitKatのadb shell pm unblock PACKAGE#
adb shell pm unhide PACKAGE#for Android Lollipopおよび以前に `pm hide`を使用した場合のみ
adb shell pmは、Android Lollipop以上でパッケージ#を有効にします

変更はすぐに行われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.