LoginSignup
2
4

More than 5 years have passed since last update.

テザリングの切り替えを検知する

Posted at

経緯

開発中のアプリでテザリングの切り替えを検知する必要が出てきたので自分用にメモ。

テザリングを切り替えた時のBroadCastを検知する

テザリングの状態を変更した時に次のアクションのIntentがブロードキャストで送信される

"android.net.conn.TETHER_STATE_CHANGED"

このアクションはConnectivityManagerに定義されている非公開のアクションだが、IntentFilterに定義することでブロードキャストを検知できる

AndroidManifest.xml
<receiver android:name=".TetherStateChangedReceiver" >
    <intent-filter>
        <action android:name="android.net.conn.TETHER_STATE_CHANGED" />
    </intent-filter>
</receiver>
TetherStateChangedReceiver.java
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals("android.net.conn.TETHER_STATE_CHANGED")) {
        Log.d(TAG, "availableArray:" + intent.getStringArrayListExtra("availableArray"));
        Log.d(TAG, "activeArray:" + intent.getStringArrayListExtra("activeArray"));
        Log.d(TAG, "erroredArray:" + intent.getStringArrayListExtra("erroredArray"));
    }
}

テザリングを切り替えた時のログは以下のようになる。

availableArray:[wlan0]  #利用可能なテザリング名
activeArray:[]          #今使用しているテザリング名
erroredArray:[]         #使用不可能なテザリング名

テザリングの切替時にアクションが複数回走るが、
テザリングをオフにした時は最終的にactiveArrayに空配列が、
テザリングをオンにした時は最終的にactiveArrayにテザリング名が入った配列が取得できるので、それでテザリングが有効かどうか判断できる。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4