今までのバージョンであれば、各設定画面がアクティビティになっているのでIntentで呼び出せば簡単に直接開けましたが3.0からはFragmentsが採用されてそうは問屋が卸してくれません。
で、下のようにインテントへのクラス名の指定方法をちょっとばかし工夫してあげる必要があります。
それだけなんですけどね。
でも、これだけでフラグメントで管理されている目的の画面を直接開けます。
Intent intent = new Intent("android.intent.action.MAIN"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if(android.os.Build.VERSION.SDK_INT >= 11){ //Honeycomb intent.setClassName("com.android.settings" , "com.android.settings.Settings$WifiSettingsActivity"); }else{ //other versions intent.setClassName("com.android.settings" , "com.android.settings.wifi.WifiSettings"); } startActivity(intent);
余談 調べてたら「PreferenceActivity#EXTRA_SHOW_FRAGMENT」という定数が追加されてたりしてこいつを「Intent#putExtra」でフラグメントのクラス名を指定して呼び出したりすればいいのかなと思ったりもしたのですがよくわかりませんでした。
なので上の方法はバッドノウハウ的な感じで本当の方法は別かもしれません。
実際、他の設定画面の場合に応用できないし^^;
2011/5/27 追記
公式リファレンス Settingsに書いてありますね。
はい。
小林さんありがとうございます。穴があったら入りたい(T▽T)
↓これでOK
startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
小林太郎
// import android.provider.Settings;
startActivity(new Intent(ACTION_WIFI_SETTINGS));
では駄目ですか?!