Androidの標準設定画面をアプリから開く方法は各所で解説されていると思いますが、今回は3.0 Honeycomb対応の方法です。
今までのバージョンであれば、各設定画面がアクティビティになっているのでIntentで呼び出せば簡単に直接開けましたが3.0からはFragmentsが採用されてそうは問屋が卸してくれません。
で、下のようにインテントへのクラス名の指定方法をちょっとばかし工夫してあげる必要があります。
それだけなんですけどね。
でも、これだけでフラグメントで管理されている目的の画面を直接開けます。
余談 調べてたら「PreferenceActivity#EXTRA_SHOW_FRAGMENT」という定数が追加されてたりしてこいつを「Intent#putExtra」でフラグメントのクラス名を指定して呼び出したりすればいいのかなと思ったりもしたのですがよくわかりませんでした。
なので上の方法はバッドノウハウ的な感じで本当の方法は別かもしれません。
実際、他の設定画面の場合に応用できないし^^;
2011/5/27 追記
公式リファレンス Settingsに書いてありますね。
はい。
小林さんありがとうございます。穴があったら入りたい(T▽T)
↓これでOK
<Category : Java(Android)>
今までのバージョンであれば、各設定画面がアクティビティになっているので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));
コメント (1)
// import android.provider.Settings;
startActivity(new Intent(ACTION_WIFI_SETTINGS));
では駄目ですか?!
投稿者: 小林太郎 | 2011年05月27日 16:50
日時: 2011年05月27日 16:50