2009年9月25日金曜日

Android Network State チェック方法

AndroidでNetworkが利用可能かどうかをチェックする方法

簡単なUtilクラスを作ってみた。「Utils.java」
package com.babukuma.android.util;

import static android.content.Context.CONNECTIVITY_SERVICE;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public final class Utils {
public static boolean isConnected(final Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(CONNECTIVITY_SERVICE);

final NetworkInfo networkInfo = connManager.getActiveNetworkInfo();

return (networkInfo != null && networkInfo.isConnected());
}
}

これをテストしてみると、
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.babukuma.android/com.babukuma.android.TestActivity}: java.lang.SecurityException: ConnectivityService: Neither user 10026 nor current process has android.permission.ACCESS_NETWORK_STATE.

こんなエラーが発生する。
なので、「AndroidManifest.xml」に

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

を追加すれば期待する値が取れる。(^(エ)^)