2012-07-15 61 views
3

試圖找到我的device.code的當前位置在這裏。引起:java.lang.IllegalArgumentException:provider = network

package com.example.location; 

import android.app.Activity;  
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.Toast; 


public class LocationActivity extends Activity 
{ 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    /* Use the LocationManager class to obtain GPS locations */ 
    LocationManager mlocManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 

    LocationListener mlocListener = new MyLocationListener(); 
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); 
} 

/* Class My Location Listener */ 
public class MyLocationListener implements LocationListener 
{ 

    @Override 
    public void onLocationChanged(Location loc) 
    { 

    loc.getLatitude(); 
    loc.getLongitude(); 

    String Text = "My current location is: " + 
    "Latitud = " + loc.getLatitude() + 
    "Longitud = " + loc.getLongitude(); 

    Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) 
    { 
    Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onProviderEnabled(String provider) 
    { 
    Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) 
    { 

    } 
} 
} 

和logcat的是

07-15 12:42:49.294: E/AndroidRuntime(3322): FATAL EXCEPTION: main 
07-15 12:42:49.294: E/AndroidRuntime(3322): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.location/com.example.location.LocationActivity}: java.lang.IllegalArgumentException: provider=network 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.os.Looper.loop(Looper.java:137) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at dalvik.system.NativeStart.main(Native Method) 
07-15 12:42:49.294: E/AndroidRuntime(3322): Caused by: java.lang.IllegalArgumentException: provider=network 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.os.Parcel.readException(Parcel.java:1331) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.os.Parcel.readException(Parcel.java:1281) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:646) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.location.LocationManager._requestLocationUpdates(LocationManager.java:589) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.location.LocationManager.requestLocationUpdates(LocationManager.java:453) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at com.example.location.LocationActivity.onCreate(LocationActivity.java:26) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.Activity.performCreate(Activity.java:4465) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
07-15 12:42:49.294: E/AndroidRuntime(3322):  ... 11 more 
+0

看到這個問題http://code.google.com/p/android/issues/detail?id=19857 – 2012-07-15 06:52:31

回答

1

您是否嘗試過在真機相同的代碼。我認爲它應該在設備上工作,網絡提供商在模擬器上導致問題。

編輯: -根據@Felipe評論,許多設備可能不支持網絡提供商。使用下面的方法來檢查提供者是否實際啓用。

/*Pass context as well as Provider name, you can get provider name via LocationManager class*/ 
    public boolean isProviderEnabled(Context ctx, String provider){ 
     LocationManager manager = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE); 
     return manager.isProviderEnabled(provider); 
    } 
+1

不檢查解決了這個真正。有些設備確實不支持NETWORK_PROVIDER。見另一個答案。 – 2013-01-10 20:49:50

+1

@FelipeMicaroniLalli感謝您的糾正。我會更新我的答案 – AAnkit 2013-01-11 05:11:25

+0

是否有真實的設備不支持LocationManager.NETWORK_PROVIDER? – 2015-11-10 06:09:44

16

我通過,如果LocationManagers NETWORK_PROVIDER啓用

if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
} 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
相關問題