2
void turnData(boolean ON)
 {
   final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
   final Class conmanClass = Class.forName(conman.getClass().getName());
   final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
   iConnectivityManagerField.setAccessible(true);
   final Object iConnectivityManager = iConnectivityManagerField.get(conman);
   final Class iConnectivityManagerClass =  Class.forName(iConnectivityManager.getClass().getName());
   final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
   setMobileDataEnabledMethod.setAccessible(true);
   setMobileDataEnabledMethod.invoke(iConnectivityManager, ON);
}

上記のコードは、android 2.3+ でデータ接続を有効/無効にするためのものです。アクティビティで実行すると、エラーなしで動作します。しかし、サービス内で実行しようとすると、アプリケーションがクラッシュしました。なぜこれが起こったのか誰か教えてもらえますか?

4

1 に答える 1

3

次の権限をマニフェスト ファイルに追加することで、問題は解決しました。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
于 2012-07-25T10:22:36.580 に答える