パケット通信を止める!
パケット通信を止めるには
パケット通信止める方法としてまず考えられるのがUIMカード(SIMカード)を抜いてしまう方法でしょう。ただわざわざ抜くのもめんどくさいし、他のところにも様々な悪影響を及ぼす可能性があるのであまり実用的ではないでしょう。ググってみると一般的にはAPN(アクセスポイントネーム)をわざと変なものに書き換えて通信できなくしてしまう方法がとられているようです。実際androidマーケットにもこの手のアプリが多く存在しています。
やってみる
APNを書き換える方法はググったら一発で見つかりました(Android開発技術録 参考にさせて頂きました!ありがとうございます)
さっそくコピペさせていただいて試してみました。ところが!!我が htcEVO ではAPNの書き換えは出来てもパケット通信が遮断される様子は全くない!どゆこと!? そもそもAPN名が「internet」ってなんだよ(笑)
調べてみるとそもそもauが採用しているCDMA2000という方式ではAPNというものを使ってないらしいことが判明…なんじゃそりゃorz
解決策
じゃどうすればいいのか…いろいろ調べてみるとandroid2.3から非公開APIとして"setMobileDataEnable"というのが存在するらしいです。これをリフレクションで呼び出せば一応パケット通信を止めることが出来るらしい。
試して見ましょう!以下適当メソッド
private toggleMobileDataEnabled(boolean enabled){ ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); try{ Method method=cm.getClass().getMethod("setMobileDataEnabled", new Class[]{Boolean.TYPE}); method.invoke(cm, enabled); }catch(Exception e){ e.printStackTrace(); } }
この手法ならめでたく htcEVO でも動きました!!
そして android2.2搭載のIS05 で試したところ例外をキャッチしたのでやはりandroid2.2以下の端末には通用しないっぽいことも判明…
手動でやれということですか