2011-10-20 6 views
3

「モバイルネットワークを使用する」設定値(trueまたはfalse)を取得したいとします。無線LANが有効になっていると、それは次のように行うことができるかどうかを知るの方法があります:ユーザーはモバイルデータを有効にしていますか?

WifiManager wm = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
int state = wm.getWifiState(); 
boolean pref = state == WifiManager.WIFI_STATE_ENABLED || state == WifiManager.WIFI_STATE_ENABLING; 

しかし、どのように、私はデータのために同じチェックを行うことができますか?

+0

を私は信じている[この] [1]リンクはあなたの問題の解決に向かいます。 [1]:http://stackoverflow.com/q/8243305/790568 – Cremons

+1

@CRemons答えとしてあなたのコメントを追加し、私はこの質問には答えマークされます。 –

答えて

0

クラスのgetDataState()を試しましたか?

TelephonyManager tm = (TelephonyManager)Context.getSystemService (Context.TELEPHONY_SERVICE); 
int state = tm.getDataState(); 
boolean pref = state == TelephonyManager.DATA_CONNECTED; 

これは、データ接続の状態をチェックする必要があります。

public boolean getMobileDataEnabled() throws Exception { 
    ConnectivityManager mcm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    Class ownerClass = mcm.getClass(); 
    Method method = ownerClass.getMethod("getMobileDataEnabled"); 
    return (Boolean)method.invoke(mcm); 
} 

をしてAndroidManifest.xmlに権限を追加します:

+1

この質問を投稿する直前に試してみました。 TelephonyManager.DATA_CONNECTEDは、デバイスがモバイルネットワークに接続されているかどうかを示します。接続されていない場合は、ユーザーがモバイルデータを有効にしていてもDISCONNECTEDと表示されます。 –

1

は、私はそれが役立ちます:)

ConnectivityManager connect = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

Boolean isConnected = connect.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected(); 
1

あなたはこれを試すことができると思います

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

この回答を多くの場所で見て、うまく働いてくれました。しかし、何らかの理由でAPI20から起動が失敗しました。ここに提案されているパーミッションの追加は問題を解決しました!ありがとう。 – yoosha

関連する問題