Android 从URL加载图像时出现网络错误

Android 从URL加载图像时出现网络错误,android,google-maps,google-maps-markers,google-maps-api-2,Android,Google Maps,Google Maps Markers,Google Maps Api 2,我正在从URL加载图像,将其转换为位图,然后将其添加到地图中的标记。我有两个标记,一个用于我的个人资料,另一个用于朋友的个人资料 当我加载图像时,我得到以下错误,并且图像没有被加载。也没有力量接近 android.os.NetworkOnMainThreadException 我不确定这是什么样的错误 下面是我正在尝试的代码:下面的代码同样适用于我的个人资料图片。只有在我尝试加载好友列表时才会出现此问题 我正在调用下面的内部for循环 for (int i = 0; i < frien

我正在从URL加载图像,将其转换为位图,然后将其添加到地图中的标记。我有两个标记,一个用于我的个人资料,另一个用于朋友的个人资料

当我加载图像时,我得到以下错误,并且图像没有被加载。也没有力量接近

 android.os.NetworkOnMainThreadException
我不确定这是什么样的错误

下面是我正在尝试的代码:下面的代码同样适用于我的个人资料图片。只有在我尝试加载好友列表时才会出现此问题

我正在调用下面的内部for循环

for (int i = 0; i < friendsList.size(); i++)
{
    userName = friendsList.get(i).getName();
    lati = friendsList.get(i).getLati();
    longi = friendsList.get(i).getLongi();
    photoUrl = friendsList.get(i).getImage();

    loadMyFriendsLocation(Double.parseDouble(lati), Double.parseDouble(longi), userName, photoUrl, 15);
}
我在这里完全是空白,我不知道这可能会出错,因为我的个人资料图片有相同的代码出现,但朋友的图片没有出现

有人能帮我解决这个问题吗


谢谢

当应用程序试图在其主线程上执行网络操作时,会引发此异常。因此,我们必须使用以下方法:-

线

Thread thread = new Thread(new Runnable(){
    @Override
    public void run() {
        try {
            //Your code goes here
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

thread.start(); 
异步任务

private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
  //your code goes here
  return response;
}

@Override
protected void onPostExecute(String result) {
  textView.setText(result);
}
如果您从web或数据库获取图像,则可以通过这种方式获取图像 从网络


在线程中下载图像或使用AsyncTask…在我的情况下,我不能使用AsyncTask,在哪里将视图转换为位图?您可以使用AsyncTask@CapDroid:在哪个部分将视图转换为位图?@驾驶员将视图转换为位图不是导致此错误的原因,此错误是因为您在主线程上调用网络操作,所以在主线程中调用网络操作。
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
  //your code goes here
  return response;
}

@Override
protected void onPostExecute(String result) {
  textView.setText(result);
}
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy); 
try { 
       Bitmap bitmap=null; 
       URL imageUrl = new URL(url); 
       HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection(); 
       conn.setConnectTimeout(30000); 
       conn.setReadTimeout(30000); 
       conn.setInstanceFollowRedirects(true); 
       InputStream is=conn.getInputStream(); 
       OutputStream os = new FileOutputStream(f); 
       Utils.CopyStream(is, os); 
       os.close(); 
       bitmap = decodeFile(f); 
       return bitmap; 
 } catch (Exception ex){ 
 ex.printStackTrace(); 
 return null; 
 } 
 }