2011-10-16 93 views
0

我一直收到此錯誤:無法從URL解析圖像

10-16 21:56:30.502: INFO/System.out(361): resolveUri failed on bad bitmap uri: [email protected]

試圖運行該代碼

public class deals extends Activity{ 

private ArrayList<HashMap<String, Drawable>> myBooks; 





@Override 
public void onCreate(Bundle savedInstanceState){ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.deal); 

myBooks = new ArrayList<HashMap<String,Drawable>>(); 
HashMap<String, Drawable> hm; 


ListView myListView = (ListView) findViewById(R.id.listView1); 

Environment.getExternalStorageDirectory().getAbsolutePath(); 

Drawable drawable3 = LoadImageFromWebOperations("http://www.bitterwallet.com/wp-content/uploads/2010/04/Tesco-Logo-Colour.jpg"); 

hm = new HashMap<String, Drawable>(); 
hm.put("Company", null); 
hm.put("Offer", null); 
hm.put("IMG", LoadImageFromWebOperations("http://2.bp.blogspot.com/_mCJwxGhlcQQ/TJxEHIOTpnI/AAAAAAAACqA/D11qqbNam80/s1600/TESCO+logo.jpg")); 
myBooks.add(hm); 

SimpleAdapter adapter = new SimpleAdapter(this, myBooks, R.layout.listview, new String[]{"company","offer","IMG"}, new int[]{R.id.text1, R.id.text2, R.id.img}); 


myListView.setAdapter(adapter); 


try { 
    JSONArray jsonArray = new JSONArray(readTwitterFeed()); 
    int length = jsonArray.length(); 
     List<String> listContents = new ArrayList<String>(length); 
    for (int i = 0; i < length; i++) 
     { 
//  listContents.add(jsonArray.getString(i)); 
     System.out.println(jsonArray.getString(i)); 

     } 


//  myListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listContents)); 


} catch (Exception e) { 
    e.printStackTrace(); 
} 

} 

public String readTwitterFeed() { 

     StringBuilder builder = new StringBuilder(); 
     System.out.println("here"); 
     HttpClient client = new DefaultHttpClient(); 
     //HttpGet httpGet = new HttpGet(
      // "http://www.hotels-in-london-hotels.com/mytrolly/service.php?request={\"mode\":\"category\"}"); 
     String url = ""; 
     try { 
      //url = "http://hotels-in-london-hotels.com/mytrolly/service.php?request={\"mode\":\"search\",\"category\":\"2\",\"seller\":\"0\",\"page\":\"1\"}"; 
      url = "http://www.hotels-in-london-hotels.com/mytrolly/serviceSeller.php"; 





      System.out.println(url); 
      String encodedurl = URLEncoder.encode(url,"UTF-8"); 
      Log.d("TEST", encodedurl); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 


     HttpGet httpGet = new HttpGet(url); 

     System.out.println("here"); 
     try { 
      HttpResponse response = client.execute(httpGet); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
       HttpEntity entity = response.getEntity(); 
       InputStream content = entity.getContent(); 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(content)); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        builder.append(line); 
       } 
      } else { 
       //Log.e(ParseJSON.class.toString(), "Failed to download file"); 
      } 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
      System.out.println("here is the error" + e.toString()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.out.println("here is the error" + e.toString()); 
     } 
     return builder.toString(); 
    } 

private Drawable LoadImageFromWebOperations(String url) 
    { 
       try 
       { 
         InputStream is = (InputStream) new URL(url).getContent(); 
         Drawable d = Drawable.createFromStream(is, "src name"); 
         return d; 
       }catch (Exception e) { 
         System.out.println("Exc="+e); 
         return null; 
       } 
     } 
} 

我試着做類似這樣的小夥子東西:

"resolveUri failed on bad bitmap uri" when putting image on ListView

但我得到一個空指針異常。有誰知道如何解決這個問題?

回答

1

我使用下面給出的代碼獲取圖像的url嘗試它,我希望得到你的答案。

static Bitmap bmp; 
private static File cacheDir; 
static Bitmap bitmap = null; 
static HttpURLConnection conn; 

private static InputStream fetch(String urlString) 
     throws MalformedURLException, IOException { 

    conn = (HttpURLConnection) (new URL(urlString)).openConnection(); 
    conn.setDoInput(true); 
    conn.connect(); 
    DefaultHttpClient httpClient = new DefaultHttpClient(); 
    HttpGet request = new HttpGet(urlString); 
    HttpResponse response = httpClient.execute(request); 
    return conn.getInputStream(); 
} 

Resources res; 

// ***********New Function For Fatching 
public static Drawable LoadImage(String URL) { 
    Drawable drawable = null; 
    Bitmap bm = null; 
    try { 
     if (fetch(URL) != null) { 
      try { 
       BitmapFactory.Options options = null; 
       // options.inSampleSize=4; 
       InputStream obj = (InputStream) fetch(URL); 
       bm = BitmapFactory.decodeStream(obj, null, null); 
       obj.close(); 
       conn.disconnect(); 
      } catch (OutOfMemoryError e) { 
      } catch (IndexOutOfBoundsException e) { 
      } 
      drawable = new BitmapDrawable(bm); 
      return drawable; 
     } else { 

      return null; 
     } 

    } catch (Exception e) { 
     Log.e("GUIMethodClasas", "fetchDrawable failed", e); 
     return null; 

    } 

} 
+0

嘿伴侶。當我今晚回到家時,我會試試這個,並告訴你我是怎麼去的,謝謝你。 –

+0

仍然無法正常工作,得到相同的迴應 –

0

試試這個代碼:

URL url = new URL(yourImageURL); 
HttpUrlConnection conn = (HttpUrlConnection)url.openConnection(); 
conn.setDoInput(true); 
conn.connect(); 
InputStream is = conn.getInputStream(); 
Bitmap b = BitmapFactory.decodeStream(is); 
yourImageViewObject.setImageBitmap(b); 

Hope this will help you! Happy Coding