[独習android]検索キー長押しでテザリング設定画面を開く
テザリングのON/OFFはこまめにやりたいので、操作を簡単にしたかった。というわけで、検索キー(検索ボタン)長押しでアクティビティを起動する方法を調べてみた。ちなみに、froyoじゃないと意味がない。Ideos, Galaxy Tab で使えることを確認した。apkはこちら→http://groundwalker.com/apk/gWtetheringMenu.apk
大まかな流れ
- AndroidManifest.xml で android.intent.action.SEARCH_LONG_PRESS を受け取るように記述すると
- インストールして検索ボタン長押しで「アプリケーションを選択」ダイアログがでるので「常にこの操作で使用する」をチェックしておけば、その後は一発起動になる
- onCreate() で起動したいアクティビティを指定して インテントを放り投げる
- 呼び出し側のアクティビティ自身は finish() で終わっとく。
- 終わっとかないと BACKキーで戻れてしまう→OnResume()定義してもいいけど、ただホームに戻りたい
- ランチャーにアイコン表示させる必要はないので、android.intent.category.LAUNCHER の intent-filter は削除しておく
AndroidManifest.xml
<activity android:name=".HomeActivity" android:label="@string/app_name"> ... <intent-filter> <!-- 検索ボタン長押しで起動するように --> <action android:name="android.intent.action.SEARCH_LONG_PRESS" /> <!-- 標準動作の候補になるように --> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
HomeActivity.java
package com.groundwalker.android.gWtetheringMenu; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class HomeActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { Log.v(TAG, "onCreate() called"); super.onCreate(savedInstanceState); // テザリング設定(→ポータブルWi-Fiアクセスポイントの設定(Mobile AP)に変更)を呼び出すインテントを作る Intent i = new Intent(Intent.ACTION_MAIN); i.setClassName( "com.android.settings", "com.android.settings.wifi.WifiApSettings"); // 呼び出す try { startActivity(i); } catch (Exception e) { Log.e(TAG, "cannot start the activity"); } // 自分は終わっとく finish(); } private final String TAG = "gWtetheringMenu"; }
apk
- なんの保証もしませんが、apk置いておきます。
12/13 ver.1.2(WifiAP((Mobile AP)設定を起動するように変更→Galaxy Tabでもテザリング使えるようになるので)(12/13現在) - http://groundwalker.com/apk/gWtetheringMenu.apk
参考
- Intents and Intent Filters | Android Developers
http://developer.android.com/guide/topics/intents/intents-filters.html - Application Fundamentals | Android Developers
http://developer.android.com/guide/topics/fundamentals.html - SEARCH_LONG_PRESS / Intent | Android Developers
http://developer.android.com/reference/android/content/Intent.html#ACTION_SEARCH_LONG_PRESS - CATEGORY_DEFAULT / Intent | Android Developers
http://developer.android.com/reference/android/content/Intent.html#CATEGORY_DEFAULT
関連情報
- 「android-dev」タグの付いたエントリ http://groundwalker.com/blog/tag/android-dev
- Android SDK関連の書籍 http://amzn.to/SS0jff
Ideos U8150-B とかで使うとしあわせになれるかもしれませんね。
Galaxy Tab ではテザリング設定画面は無効化されているが、Mobile AP設定画面は有効なので、こちらを起動するようにした。