EntryNavi : « LG Optimus 2Xのファームウェアの変更方法 | メイン | Galaxy Tab 10.1で向き固定のActivityから向き固定のActivityを呼び出す場合の注意点 »

CategoryNavi : メイン -> コンピューター -> 開発 -> Java(Android)

AndroidのWifi設定画面を開く方法(Honeycomb対応)

Androidの標準設定画面をアプリから開く方法は各所で解説されていると思いますが、今回は3.0 Honeycomb対応の方法です。

今までのバージョンであれば、各設定画面がアクティビティになっているので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));
 
<Category : Java(Android)>

コメント (1)

// import android.provider.Settings;

startActivity(new Intent(ACTION_WIFI_SETTINGS));

では駄目ですか?!

コメントを投稿

検索

Google

サイドフィード

track feed 理ろぐ
人気ブログランキング - 理ろぐ
Powered by
Movable Type 3.34