全ての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());