java.lang.IllegalArgumentException:provider == null

col*_*ore 1 gps android locationmanager

我有一个类的问题,log cat在运行时返回此错误

12-05 23:19:18.299: E/AndroidRuntime(15460): Caused by: java.lang.IllegalArgumentException: provider==null
12-05 23:19:18.299: E/AndroidRuntime(15460):    at android.location.LocationManager.getLastKnownLocation(LocationManager.java:1017)
12-05 23:19:18.299: E/AndroidRuntime(15460):    at com.rbrlnx.lugares.editarLugar.onCreate(editarLugar.java:110)
12-05 23:19:18.299: E/AndroidRuntime(15460):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-05 23:19:18.299: E/AndroidRuntime(15460):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
Run Code Online (Sandbox Code Playgroud)

代码是

     /************************************************************************************
     * 
     * Creamos un location manager, le establecemos unos criterios minimos para encontra
     * 
     ***********************************************************************************/
    LocationManager locManager = (LocationManager)getSystemService(LOCATION_SERVICE);
    Criteria criterio = new Criteria();
    criterio.setAccuracy(Criteria.ACCURACY_COARSE);
    String mejorProvider = locManager.getBestProvider(criterio, true);

        //Obtenemos la última posición conocida
        final Location loc = locManager.getLastKnownLocation(mejorProvider);
        latitud = loc.getLatitude();
        longitud= loc.getLongitude();

        //Me centro en el mapa
          yo = new GeoPoint(
         (int)(latitud*1000000),
         (int)(longitud*1000000));
Run Code Online (Sandbox Code Playgroud)

只设置最好的提供商,并获得最后知道的位置,但它崩溃,谁知道为什么?

dmo*_*mon 5

这是因为这条线

   String mejorProvider = locManager.getBestProvider(criterio, true);
Run Code Online (Sandbox Code Playgroud)

结果mejorProvider为空.是什么导致了这个?很难说.您要求的提供程序不存在,或者您可能未在清单中启用权限以请求用户的位置.