Michiel T
Michiel T

Reputation: 537

Showing an image in a webview (not working) android

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.

Upvotes: 2

Views: 5583

Answers (4)

shassss
shassss

Reputation: 321

 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>

Upvotes: 1

Yash
Yash

Reputation: 1751

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);

Upvotes: 2

NagarjunaReddy
NagarjunaReddy

Reputation: 8645

 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");

  }    

 }

Upvotes: 0

tomieq
tomieq

Reputation: 29

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.

Upvotes: 0

Related Questions