在安卓4.0及以上版本/ API 14及以上版本中,NETWORK_PROVIDER不起作用。

5
在Android 4.0及以上版本中,调用LocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,listener)会出现异常,原因是java.lang.IllegalArgumentException:provider = network。即使启用了网络,仍会出现相同的异常。我知道这是一个已报告的问题(http://code.google.com/p/android/issues/detail?id=19857)。我的问题是:如何在Android 4.0及以上版本中通过网络提供程序或任何其他方法(而不是GPS)获取位置?
3个回答

1

Android 4.0框架存在一个未解决的问题,因此网络提供商无法正常工作,但最新的Android版本已经解决了这个问题并成功运行,请在最新的Android框架中检查您的代码。


请问您能提供这个问题的链接吗? - ihrupin

0

是的,这个支持在更新的版本中已经可用,你可以去检查一下。


0

不要使用直接的提供程序字符串,因为不能保证它将在运行时存在。

只使用从LocationManager获取的提供程序,像这样:

    LocationManager locationManager = (LocationManager)context.getSystemService( Context.LOCATION_SERVICE );

    Criteria criteria = new Criteria();
    criteria.setAccuracy( Criteria.ACCURACY_COARSE );
    String provider = locationManager.getBestProvider( criteria, true );

    if ( provider == null ) {
        Log.e( TAG, "No location provider found!" );
        return;
    }

    lastLocation = locationManager.getLastKnownLocation(provider);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接