✌️

AndroidのSettingsにない設定画面に遷移させる方法

に公開

開発中に仕様として特定の設定画面に遷移してほしいと言われたけど、通常設定画面への遷移で利用するSettingsクラスに定義が無くて、Intentのactionがわからないということは無いでしょうか?

自分の場合だとStackOverflowで回答を見つけて遷移できたらラッキーぐらいにずっと思っていたのですが、今実装中の施策である特定の設定画面に遷移できないか探していた時にたまたま方法を発見したのでご紹介します。

やり方はシンプル

ご存じの方もいるかと思いますが、設定画面もAndroid OS内ではアプリになっています。そして、Android OSはOSSです。
ということは、設定画面はActivityやFragmentで構成されていますし、そのActivityやFragmentが公開されているAndroidManifest.xmlにも記載されています。AndroidManifest.xmlにはその他のアプリと同様にintent-filterが記載されていて、action名も記載されています。

なので、ご紹介しますといいつつも大変ではなく、LogcatでActivity/Fragmentを特定して、あとはAndroid OSのリポジトリからaction名を探すという至ってシンプルな方法です。

では、より具体的にご説明していきます。

Activity/Fragmentを特定する

設定画面を開いたあとにLogcatを確認すると設定画面に紐づいているActivity名やFragment名をを見つけることができます。

Logcatを確認する際はフィルターにpackage:com.android.settings Launchを指定するとわかりやすいです。

例えば、これは設定の「ディスプレイとタップ」→「画面自動消灯」を確認した際のログです。
ログのスクリーンショット

「ディスプレイとタップ」がcom.android.settings.DisplaySettings、「画面自動消灯」がcom.android.settings.display.ScreenTimeoutSettingsですね。

AndroidManifest.xmlからaction名を調べる

検索するとAndroidManifest.xmlは様々なところで公開されていますが、ひとまず今回はAndroid Code SearchにあるAndroidManifest.xmlから探してみます。

なお、今回は設定画面なので、apps/Settingsを見ていますが他のデフォルトアプリもapps配下にあるので、デフォルトのアプリで遷移してみたい先があるのであれば見てみると良いかもしれません。

探すのも簡単で先ほど見つけたFragment名を文字列検索するだけです。

「ディスプレイとタップ」の場合はこちらですし、「画面自動消灯」の場合はこちらですね。

各々、<activity>が紐づいており、action名がcom.android.settings.DISPLAY_SETTINGSandroid.settings.SCREEN_TIMEOUT_SETTINGSであることがわかりますね。

遷移する

上記で調べたaction名を通常通りIntentで指定して、遷移するだけです。
以下は「ディスプレイとタップ」に遷移したい場合の例です。

val intent = Intent("com.android.settings.DISPLAY_SETTINGS")
activity.startActivity(intent)

まとめ

この手順であれば少なくともAndroidManifest.xmlに記載があれば対応することが可能です。すべての画面にactionが紐づいているかまでは見ていないので、もしかすると遷移できない画面もあるかもしれませんが、この手順であれば遷移できないかもきちんと説明できる情報が取得できるのも良い点です。

ただ、例えば、Activity名が出力される場合のログもあるようなので、もっと手軽な方法があるかもしれません(契機がわからなかったので今回の手順では使いませんでした)。また、Android OSのソースがあるわけなので、きちんとソースを追ってActivityを見つけたり、AIに探させても良いかもしれませんね。

番外編

最後のまとめを書いていて、AIに探してもらえばよいのではと思ったので、実際にGemini 2.5 Proを使って探してみましたが、残念ながら見つけることはできませんでした。

ただし、DisplaySettingsScreenTimeoutPreferenceControllerに紐づいていることまではわかったようなので、プロンプト次第では見つけられるかもしれません。

GMOペパボ株式会社

Discussion