【メモ】JavaからAndroid端末(4.0以降)のAPN名取得とか

今回、Javaで、Android端末のAPNを触ってみようと思います。

ざっくりまとめ

  1. APNの新規・編集・削除・接続先変更はサードパーティーアプリにはアクセス権限が無い
  1. 接続先APNを見たい場合、Wifiを切断して携帯ネットワークに接続し、NetworkInfoクラスのgetExtraInfo()で取得できる。しかし、APNのID/パスワードは見れない


1 サードパーティーではAPNにアクセスできない

APNの設定に関してはPermisionがAndroid4.0以降かなり高くなっているので自作アプリではアクセスできなくなっています。MVNO各社が自社製のアプリで回線情報は見れてもAPNの設定をしてくれないのはそのためです。

最近のAndroidはAPN情報をもともと持っていることが多いので、今はSIMを指すだけで良かったりしますが。

<参考>

Android WRITE_APN_SETTINGS 終了のお知らせ | Taosoftware Developer Blog


2 接続先APNを取得する場合

APN設定にはアクセス出来ませんが、現在接続しているAPNは取得できます。(以下のサンプルコード)

public class CurrentNetwork {
    private ConnectivityManager cm;
    public String typeName;
    public String reason;
    public String extraInfo;
    public CurrentNetwork(ConnectivityManager cm){
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo == null){
        }else {
            if (nInfo.isConnected()) {
                this.typeName = nInfo.getTypeName();
                this.extraInfo = nInfo.getExtraInfo();
                this.reason = nInfo.getReason();
            }
        }

    }
}