2

Im trying to show an image in an webview but my app crashes as soon as it gets to the activity where the webview is loaded.

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.getSettings().setJavaScriptEnabled(true);
 //   myWebView.getSettings().setBuiltInZoomControls(true);
 //   myWebView.getSettings().setSupportZoom(true);
    myWebView.loadUrl("http://www.de-saksen.nl/2/images/comprofiler/62_4dc3051f2b262.jpg");
 //     myWebView.loadData(
 //            "<img src='http://www.de-saksen.nl/2/images/comprofiler/62_4dc3051f2b262.jpg'>",
 //            "text/html", "UTF-8");

I've been puzzeling with the code a little but nothing helps.

The activity is in the Manifest.xml and it allows internet permission.

EDIT: Reading all of your awnsers helpt alot and noticed that the image loads if I place the code inside an new activity, but I need to be able to load it in this one:

public class Profileviewer extends ListActivity {


/** Called when the activity is first created. */

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);


    setContentView(R.layout.listplaceholder);


    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();


    JSONObject json = JSONfunctions.getJSONfromURL("http://de-saksen.nl/deelnemers.txt");



    try{

        JSONArray  deelnemers = json.getJSONArray("deelnemers");

        int Key = getIntent().getIntExtra("Key", -1);

            { HashMap<String, String> map = new HashMap<String, String>();  
            JSONObject e = deelnemers.getJSONObject(Key);

            map.put("id",  String.valueOf(Key));
            map.put("name", "Naam: " +  e.getString("naamingw2"));
            map.put("sex", "Geslacht: " +  e.getString("geslacht"));
            map.put("rank", "Rang: " +  e.getString("rang"));
            map.put("race", "Ras: " +  e.getString("ras"));
            map.put("profession", "Beroep: " +  e.getString("beroep"));
            map.put("skills", "Hobby's: " +  e.getString("hobbys"));
            map.put("lvl", "Level: " +  e.getString("level"));
            map.put("avatar", e.getString("avatar"));
            mylist.add(map);            
        }   



    }catch(JSONException e)        {
         Log.e("log_tag", "Error parsing data "+e.toString());
    }

    ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.profile, 
                    new String[] { "name", "sex", "rank", "race", "profession", "skills", "lvl" }, 
                    new int[] { R.id.item_title, R.id.item_subtitle, R.id.item_subtitle2, R.id.item_subtitle3, R.id.item_subtitle4, R.id.item_subtitle5, R.id.item_subtitle6 });

    setListAdapter(adapter);




    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);  
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            Intent intent = new Intent(Profileviewer.this, Listviewer.class);   
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            startActivity(intent); 
        }
    });



}
}

Because in this activity I have the current selected user.

Michiel T
  • 537
  • 9
  • 23
  • i just tried your code. it is working fine. ie, loading image without any issue. on which version `OS`, you are trying this code ? – sunil Jul 30 '12 at 12:24

4 Answers4

2

use this

byte[] imageRaw = null;
try {
 URL url = new URL("http://some.domain.tld/somePicture.jpg");
 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

 InputStream in = new BufferedInputStream(urlConnection.getInputStream());
 ByteArrayOutputStream out = new ByteArrayOutputStream();

 int c;
 while ((c = in.read()) != -1) {
     out.write(c);
 }
 out.flush();

 imageRaw = out.toByteArray();

 urlConnection.disconnect();
 in.close();
 out.close();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

  String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT);

  String urlStr   = "http://example.com/my.jpg";
  String mimeType = "text/html";
  String encoding = null;
  String pageData = "<img src=\"data:image/jpeg;base64," + image64 + "\" />";

  WebView wv;
  wv = (WebView) findViewById(R.id.webview);
  wv.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr);
Yash
  • 1,751
  • 13
  • 14
1
 public class WebviewActivity extends Activity {         
           public void onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);        
           setContentView(R.layout.main);        

     WebView wv = (WebView) findViewById(R.id.webview1);        
           WebSettings webSettings = wv.getSettings();        
           webSettings.setBuiltInZoomControls(true);        
           wv.loadUrl("http://ecx.images-amazon.com/images/I/41HGB-W2Z8L._SL500_AA300_.jpg");

     }    

}

xml

<?xml version="1.0" encoding="utf-8" ?> 
  <LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"   
android:layout_width="fill_parent" 
android:layout_height="fill_parent"   
android:orientation="vertical">
  <WebView 
    android:id="@+id/webview1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
 </LinearLayout>
shassss
  • 321
  • 1
  • 13
0

I've just run that code on emulator and it works just nice.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

Android 3.2 There is no need to start AsyncTasks.

tomieq
  • 29
  • 1
  • 4
0
 public class WebviewActivity extends Activity {     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);        

  WebView wv = (WebView) findViewById(R.id.webview1);   
    WebSettings webSettings = wv.getSettings(); 
    webSettings.setBuiltInZoomControls(true);   
    wv.loadUrl("http://ecx.images-amazon.com/images/I/41HGB-W2Z8L._SL500_AA300_.jpg");

  }    

 }
NagarjunaReddy
  • 8,621
  • 10
  • 63
  • 98