2015/07/13

Android SDK でモバイルデータ通信を無効にする方法

技術系エントリです。Android SDK を使ってモバイルデータ通信を無効にするには、 ConnectivityManager を使用します。


    ConnectivityManager manager = (ConnectivityManager)
        context.getSystemService(CONNECTIVITY_SERVICE);

setMobileDataEnabled は private method なので、リフレクションを使って呼び出します。


    Method method = manager.getClass().getMethod("setMobileDataEnabled", new Class[] { Boolean.TYPE });
    method.setAccessible(true);
    method.invoke(manager, false);

モバイルデータ通信を無効になったかどうかは getMobileDataEnabled を使って調べますがこちらも private なのでリフレクションで。setAccessible は不要です。


    Method method = manager.getClass().getMethod("getMobileDataEnabled");
    boolean mobile = (Boolean) method.invoke(manager);

Manifest にパーミッションが必要なのでお忘れなく。


    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

0 件のコメント:

コメントを投稿