Settingsアプリでの設定値を取得する


全てのAndroid端末には、標準でSettingsアプリ(設定アプリ)がインストールされており、
SettingsアプリでWifiのOn/Offや、通知音など様々な設定を行うことができます。

本エントリでは、Settingsアプリで既に設定済みの情報を取得する方法を紹介します。

Settingsアプリケーションの設定値を取得することで、作成するアプリケーションで必要な設定項目の状態を確認することができ、
もし、必要な項目がOFFになっている場合などには、SettingsアプリをIntentで呼び出すなどの手段をとることができます。

それでは、続きにて詳細な利用方法を紹介していきます。

取得できるデータの種類

Settingsアプリで設定した情報の内で、取得できる情報の例に以下の表を用意しました。

[table “149” not found /]

他にも、紹介しきれない程の取得出来るデータがあります。
詳細はReferenceを参照ください。
※deprecatedとされているAPIも多く存在するため、使用前には確認するようにしましょう。

設定値を取得する

設定値を取得する為には、以下の手順が必要です。

    1.設定値を取得するためのNameValue「Settings.System.○○」を調べる
    2.getContentResolverメソッドを用いてContentResolverを取得する
    3. 1.で調べたNameValueとContentResolverを元にSettings.System.get○○メソッドで値を取得する

1.設定値を取得するためのNameValue「Settings.System.○○」を調べる

例えば、USBやACプラグに接続されている場合に「スリープモードにしない」の項目の設定情報を取得する場合には、
STAY_ON_WHILE_PLUGGED_INを参照します。

Referenceからは、「NameValue」を指定した場合に取得出来るデータの型と、どういったデータが取得出来るかを確認するとよいでしょう。

例に挙げた、STAY_ON_WHILE_PLUGGED_INは、String型で下記設定値を保持しています。

[table “148” not found /]

サンプルソースコード

本エントリの題材のサンプルソースコードとして、以下を用意しました。
サンプルでは、現在設定されているAlarm音とスリープモードの設定、12/24時間の表示設定を取得しTextViewに表示しています。

Settings.System.getStringメソッドに使用するため、2行目でContentResolverを取得しています。
取得したContentResolverを使用し、5,8,11行目で各設定値を取得しています。
※各設定値で何が取得出来るかは、上記表を参照ください。

		// ContentResolverの取得
		ContentResolver cr = getContentResolver();

		// Alarm音
		String alarm = Settings.System.getString(cr, Settings.System.ALARM_ALERT);

		// StayAwakeの設定
		String stay = Settings.System.getString(cr, Settings.System.STAY_ON_WHILE_PLUGGED_IN);

		// 12/24時間表示値
		String showHour = Settings.System.getString(cr, Settings.System.TIME_12_24);

		// textの作成
		StringBuilder sb = new StringBuilder();
		sb.append("ALARM_ALERT : ");
		sb.append(alarm);
		sb.append("\n\n");

		sb.append("STAY_ON_WHILE_PLUGGED_IN : ");
		sb.append(stay);
		sb.append("\n\n");

		sb.append("TIME_12_24 : ");
		sb.append(showHour);
		sb.append("\n\n");

		((TextView)findViewById(R.id.textView1)).setText(sb.toString());

サンプル実行結果