我知道这个话题已经在这里问过,但我不明白为什么作为expectd我的代码不能正常工作。我需要在启动我的应用程序时检查数据连接,但它在某些平板电脑上(如Nexus 7)崩溃,但不是全部。检查网络连接崩溃
我的代码:
public static boolean getNetworkState(Context pContext)
{
ConnectivityManager connect = (ConnectivityManager)pContext.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connect != null)
{
if (connect.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting())
{
return true;
}
else
{
return false;
}
}
else
return false;
}
public static boolean getWifiState(Context context)
{
ConnectivityManager connect = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connect.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting())
{
return true;
}
else
{
return false;
}
}
连接检查:
if(Commons.getNetworkState(this) || Commons.getWifiState(this))
{
loadData();
}
else
{
Commons.getConnectivityErrorMessage(this);
}
通常情况下,如果不支持平板电脑的网络连接,在“getNetworkState”中的“连接”对象应为空,但它似乎这是不是这样的,因为它坠毁,机上线
if (connect.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting())
什么错在这里的? 权限已写入
编辑:不幸的是,我没有平板电脑来测试问题。我只是在开发者控制台上有用户报告。下面的报告已经报告的用户用的Nexus 7:
java.lang.RuntimeException: Unable to resume activity {com.meteociel.fr/com.meteociel.fr.activities.MeteocielActivity}: java.lang.RuntimeException: Unable to resume activity {com.meteociel.fr/com.meteociel.fr.activities.HomeActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2575)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2603)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2089)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Unable to resume activity {com.meteociel.fr/com.meteociel.fr.activities.HomeActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2575)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:178)
at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:523)
at android.app.ActivityGroup.onResume(ActivityGroup.java:61)
at com.meteociel.fr.activities.MeteocielActivity.onResume(MeteocielActivity.java:69)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
at android.app.Activity.performResume(Activity.java:5082)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2565)
... 12 more
Caused by: java.lang.NullPointerException
at com.meteociel.fr.classes.Commons.getNetworkState(Commons.java:36)
at com.meteociel.fr.activities.HomeActivity.onResume(HomeActivity.java:98)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
at android.app.Activity.performResume(Activity.java:5082)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2565)
... 19 more
编辑2:所有这些我使用权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
post logcat请 –
哪个权限? – Shiva
添加会增加额外的检查,看是否'connect.getNetworkInfo(...)的结果'不'null'。这似乎是崩溃,坦率的起源,这将是有意义的是'null'如果没有提供所有给定的网络类型的任何信息。 –