Androidアプリを無効化/有効化する

Android ICS以降ではプリインアプリを無効化/有効化できるようになりました。しかしながら国内で販売される携帯にはアプリによってはそのための操作画面が普通では表示できないものがあるのです。

先日Xperia SXを購入しました。コンパクトでキビキビ動く非常に良い端末なのですが、いかんせん日本で発売される携帯はプリインアプリが馬鹿みたいに多くて、見通しが悪くて困ります。そこでちまちまといじって各種プリインアプリをアンインストールもしくは無効化していました。が、ちょっとやり過ぎちゃいまして電話すらかけられない状態にw で、ちょっとすったもんだして復活できましたので、そこから得た知見を記録しておきます。まぁ、早い話個人的な備忘録ですよ。

(見えない)アプリの詳細情報を表示する

Android 4.0 (ICS)以降ではプリインアプリを無効化/有効化できるようになりました。しかしながら国内で販売される携帯には、アプリによってそのための操作画面が表示できないものがあるのです。Xperia SXもそうなんです。具体的には設定のアプリ→インストール済みアプリ(一覧)とかそんな画面から操作画面を表示できるんですが、そもそも一覧に表示されないアプリは操作画面すら表示できないってね…もう泣きたくなります。一覧に出さないのにはそれなりに事情もあるんでしょうが、やっぱりそれじゃ困る奴も多いってわけです。

前置きはもう良いでしょう。必要なのはadbです。これわかんない人は帰ってください。もしくは今すぐググって使いこなせるようになってきてください。でそのadbでこんなことをしますと…そのアプリ操作画面が出てきます。正確にはアプリの詳細情報画面です。

$ adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d {アプリ指定子}

{アプリ指定子}には、具体的には package:com.android.phone みたいな文字列を書きます。やってみましょう。

$ adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:com.android.phone

電話アプリの詳細情報画面が表示されましたね。このアプリはXperia SXのアプリ一覧には表示されないので、このアプリの詳細画面は普通には表示できないものなのです。ただ電話アプリはシステムにとって重要なアプリですから、無効化することはできません。では次に package:com.nttdocomo.android.atf を指定してみましょう。

$ adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:com.nttdocomo.android.atf

オートGPSなるアプリの詳細情報が表示されたことでしょう。このアプリは無効化できます! やった早速無効化しましょう!(ぉ 冗談はさておき、このアプリは自分の居場所に応じて最適な情報をドコモから受信するためのものなので、まぁ私は要らないですね。

これでどんなアプリでも詳細情報を表示できることがわかりました。でもね…アプリ指定子には何を指定したら良いのでしょう?

アプリ指定子の一覧を表示する

これもコマンドラインからできちゃいます。コマンドライン大好きです。

$ adb shell pm list packages

これだけ。インストールされているアプリ指定子が表示されましたよ。

あとは根性と根気で一つ一つ見てけばいいんじゃないでしょうか。

その他もろもろ雑感とか

本当はpmつかえばそのまま有効/無効切り替えられるはずなんですが、私のXperia SXはKiillされちゃうらしくダメでした。なので詳細情報画面から手動でポチポチやるわけです。

アプリ指定子って書くよりはパッケージ指定子のほうが正確です。ただアプリと言ったほうが一般的にはわかりやすいかなって…まぁ、こんな玄人向けの内容で要らん気を回しました。

あ、むやみにアプリ無効化して動かなくなっても私は責任持てませんよ…まぁ自分でガンバレ。