java.lang.IllegalArgumentException异常:InputStream中不能为空

问题描述:

当我使用此代码找到两个地理点之间的距离,他们之间绘制路径,我得到这个例外java.lang.IllegalArgumentException异常:InputStream中不能为空

java.lang.IllegalArgumentException: InputStream cannot be null 

public class MapRouteActivity extends MapActivity { 
    LinearLayout linearLayout; 
    MapView mapView; 
    private Road mRoad; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
     new Thread() { 
      @Override 
      public void run() { 
       double fromLat = 49.85, fromLon = 24.016667; 
       double toLat = 50.45, toLon = 30.523333; 
       String url = RoadProvider 
         .getUrl(fromLat, fromLon, toLat, toLon); 
       InputStream is = getConnection(url); 
       mRoad = RoadProvider.getRoute(is); 
       mHandler.sendEmptyMessage(0); 
      } 
     }.start(); 
    } 

    Handler mHandler = new Handler() { 
     public void handleMessage(android.os.Message msg) { 
      TextView textView = (TextView) findViewById(R.id.description); 
      textView.setText(mRoad.mName + " " + mRoad.mDescription); 
      MapOverlay mapOverlay = new MapOverlay(mRoad, mapView); 
      List<Overlay> listOfOverlays = mapView.getOverlays(); 
      listOfOverlays.clear(); 
      listOfOverlays.add(mapOverlay); 
      mapView.invalidate(); 
     }; 
    }; 

    private InputStream getConnection(String url) { 
     InputStream is = null; 
     try { 
      URLConnection conn = new URL(url).openConnection(); 
      is = conn.getInputStream(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return is; 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 
} 
+2

你有互联网许可吗? – Blackbelt

+0

好吧它的工作...非常感谢 –

+0

欢迎您 – Blackbelt

InputStream为空,你需要修复:

InputStream is = getConnection(url); 
if (is != null) { 
    // do your work 
} 
else { 
    // logging error 
} 

在你的情况你的方法,如果你有权限上网getConnection(url)返回null所以首先检查:

<uses-permission android:name="android.permission.INTERNET"/>