我是 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)
也许是因为上下文为空?如果是的话,我应该如何处理他的上下文?如果有人可以解决我的问题,请将整个代码发送给我,而不仅仅是一些片段,我是初学者,我不知道我应该如何处理这些片段 xD