私はAndroidを初めて使用しますが、考えることはほとんどありませんが、これは私にとって難しいです:
まず、インターネットに接続しているかどうかを確認したい: 動作します。次に、有効にしたモバイル データ/wifi が機能するかどうかを確認します。次に、モバイルネットワークをオンにして(無効になっている場合)、インターネットへの(良好な)接続があるかどうかを確認したい:動作しない
https://stackoverflow.com/a/8962211/1879409のコードを使用しましたが、このメソッドを呼び出す方法がわかりませんか? また、これを別のクラス ファイル (.java ファイル) で実行し、メイン アクティビティからこの関数を呼び出したいと考えています。
誰かが私にこれを行う方法の例を教えてもらえますか??
すべての回答に感謝します xD
編集
私のSettings.javaでは次のようになります。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import android.content.Context;
import android.net.ConnectivityManager;
import android.util.Log;
public class SettingsHelper {
static void setMobileDataEnabled(Context context, boolean enabled) {
try {
final ConnectivityManager conman = (ConnectivityManager) context.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, enabled);
Log.i("setMobileDataEnabled()","OK");
}
catch (Exception e)
{
e.printStackTrace();
Log.i("setMobileDataEnabled()","FAIL");
}
}
}
Settings.setMobileDataEnabled(context, true); を呼び出すと、私のMainActivityから私は得る:
02-01 14:51:19.680: W/System.err(23318): java.lang.NullPointerException
02-01 14:51:19.700: W/System.err(23318): at at.htlmbprojekt.wksimonsfeld.iceapp.SettingsHelper.setMobileDataEnabled(SettingsHelper.java:15)
02-01 14:51:19.700: W/System.err(23318): at at.htlmbprojekt.wksimonsfeld.iceapp.MainActivity.checkIfStorageAvailable(MainActivity.java:83)
02-01 14:51:19.700: W/System.err(23318): at at.htlmbprojekt.wksimonsfeld.iceapp.MainActivity.access$4(MainActivity.java:81)
02-01 14:51:19.700: W/System.err(23318): at at.htlmbprojekt.wksimonsfeld.iceapp.MainActivity$2.onClick(MainActivity.java:76)
02-01 14:51:19.700: W/System.err(23318): at android.view.View.performClick(View.java:4211)
02-01 14:51:19.700: W/System.err(23318): at android.view.View$PerformClick.run(View.java:17267)
02-01 14:51:19.700: W/System.err(23318): at android.os.Handler.handleCallback(Handler.java:615)
02-01 14:51:19.700: W/System.err(23318): at android.os.Handler.dispatchMessage(Handler.java:92)
02-01 14:51:19.700: W/System.err(23318): at android.os.Looper.loop(Looper.java:137)
02-01 14:51:19.700: W/System.err(23318): at android.app.ActivityThread.main(ActivityThread.java:4898)
02-01 14:51:19.700: W/System.err(23318): at java.lang.reflect.Method.invokeNative(Native Method)
02-01 14:51:19.700: W/System.err(23318): at java.lang.reflect.Method.invoke(Method.java:511)
02-01 14:51:19.700: W/System.err(23318): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
02-01 14:51:19.700: W/System.err(23318): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
02-01 14:51:19.700: W/System.err(23318): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:103)
02-01 14:51:19.700: W/System.err(23318): at dalvik.system.NativeStart.main(Native Method)
おそらくコンテキストがnullだからでしょうか?はいの場合、私は彼のコンテキストで何をすべきですか? 誰かが私の問題を解決できる場合は、一部のスニペットだけでなく、コード全体を送ってください。私は初心者で、これらのスニペットをどうすればよいかわかりません xD