【问题标题】:Google Map v2 is not open for NEXUS 7 tabletGoogle Map v2 未对 NEXUS 7 平板电脑开放
【发布时间】:2015-05-18 18:03:39
【问题描述】:

我尝试将我的 android -studio apk 安装在具有 NEXUS 7 google 和 android verion 5.1.1 的平板设备中。该应用程序根本没有加载我的地​​图,并且显示的消息是“应用程序已停止”。

我在 NEXUS 7 平板电脑上尝试了我的应用程序的旧版私人版本,它成功了,唯一的区别是我不显示 toast 消息。 Toast 消息指示用户设备中是否可以连接 wi-fi 或移动设备。请在下面找到代码:

private void setUpMap() {
   ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

 if (conMan != null) {
//mobile
NetworkInfo.State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();

//wifi
NetworkInfo.State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();


if (mobile == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTED)
{
Toast.makeText(getApplicationContext(),"Connection available",Toast.LENGTH_LONG).show();
}
else
{
    Toast.makeText(getApplicationContext(),"Connection not available",Toast.LENGTH_LONG).show();
}
} // end if
else 
{  //do nothing
}

 // set position, title, snippet and icon for each marker
    mMap.addMarker(new MarkerOptions().position(new LatLng(X, Y)).title("NAME").snippet("SURNAME").icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));

.....
...
}  // END SETUPMAP

如果 conMan 不为空,则执行检查(wi-fi 或移动设备),否则不执行任何操作并继续在地图上加载标记。对于 NEXUS 7,检查应该进入 else,因为 conMan 为空,并且应该继续加载标记。但是仍然无法正常工作,该应用程序在 NEXUS 7 中崩溃了。您能告诉我该怎么做吗?

    java.lang.RuntimeException: Unable to start activity      
ComponentInfo{project.name/project.name.MapsActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
at android.app.ActivityThread.access$600(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4895)
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:994)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at project.name.MapsActivity.setUpMap(MapsActivity.java:147)
at project.name.MapsActivity.setUpMapIfNeeded(MapsActivity.java:64)
at project.name.MapsActivity.onCreate(MapsActivity.java:43)
at android.app.Activity.performCreate(Activity.java:5163)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061)
... 11 more

这是第 147 行:

private void setUpMap() {


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

    if (conMan != null) {            //line 147
        //mobile
        NetworkInfo.State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();

【问题讨论】:

  • 地图活动第 147 行!
  • 第 147 行是空检查: if (conMan != null) {
  • 表示您的conMan 为空。
  • @Thanos : 这不是真的 null 检查不能抛出 NPE。也许你必须重新构建你的项目

标签: java android google-maps-api-2


【解决方案1】:

Nexus 7 wifi 将返回 null :

conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)

因为它的wifi不支持移动数据, 所以你必须检查该行是否为 Null 然后获取它的状态。

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            if(conMan != null)
            {
                NetworkInfo inf = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

                if(inf != null) {
                    NetworkInfo.State mobile = inf.getState();
                }
            }

【讨论】:

  • 谢谢!似乎它可以在没有 SIM 卡的平板设备中使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多