I am new to android and making an app that's basically an appwidget
I have read many tutorials but could not figure out what to do. here is my problem
I would like to create a Android widget that contains a value coming from a RESTful web service.
this is my code :
package com.android.widget;
import java.util.List;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.RemoteViews;
public class HelloWidget extends AppWidgetProvider {
    List<Top5> myList;
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        start();
        new View(context, appWidgetManager,myList.get(0).getValeur());
    }
    private class View  {
        RemoteViews remoteViews;
        ComponentName thisWidget;
        public View(Context context, AppWidgetManager appWidgetManager,String x) {
            remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
            thisWidget = new ComponentName(context, HelloWidget.class);
            remoteViews.setTextViewText(R.id.tp5hausses,x);
            appWidgetManager.updateAppWidget(thisWidget, remoteViews);
        }
    } 
    public void start(){
        requestData("http://10.0.3.2:8085/BTCRestfullWebServices/market/top5");
    }
    private void requestData(String uri) {
        MyTask task = new MyTask();
        task.execute(uri);
    }
    private class MyTask extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
        }
        @Override
        protected String doInBackground(String... params) {
            String content = HttpManager.getData(params[0]);
            return content;
        }
        protected void onPostExecute(String result) {
            myList = Top5JSONParser.parseFeed(result);
        }
    }
}
JSON Parser class :
package com.coolsandie.android.widget;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Top5JSONParser {
    public static List<Top5> parseFeed(String content) {
        try {
            //JSONArray ar = new JSONArray(content);
            JSONObject obj = new JSONObject(content);
            JSONArray ar = obj.getJSONArray("market");
            List<Top5> marketList = new ArrayList<Top5>();
            Top5 flower = null;
            for (int i = 0; i < ar.length(); i++) {
                JSONObject obj2 = ar.getJSONObject(i);
                flower = new Top5();
                JSONObject obj3 = obj2.getJSONObject("referentiel");
                flower.setValeur(obj3.getString("stockName"));
                flower.setCours(obj2.getDouble("last"));
                flower.setVar(obj2.getDouble("change"));
                flower.setVolum(obj2.getInt("volume"));
                flower.setTitre(obj2.getInt("trVolume"));
                marketList.add(flower);
            }
            return marketList;
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }
}
HTTp Manager class :
package com.android.widget;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.util.Base64;
import android.util.Log;
public class HttpManager {
    public static String getData(String uri) {
        BufferedReader reader = null;
        try {
            URL url = new URL(uri);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            StringBuilder sb = new StringBuilder();
            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            return sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    return null;
                }
            }
        }
    }
}
The JSON file:
{"market":[{"caps":"231704.58","change":"0.1","close":"9.500","cto":"0.000","high":"9.600","last":"9.510","low":"9.490","max":"9.770","min":"9.210","open":"9.490","referentiel":{"isin":"TN0003100609","stockName":"BNA","ticker":"BNA","valGroup":"11"},"seance":"2015-04-08 00:00:00.0","time":"14:04:22","trVolume":"1000","volume":"24335.0","vto":"0.000","ychange":"0.00"},{"caps":"230145.46","change":"0.0","close":"1.820","cto":"0.000","high":"1.850","last":"1.820","low":"1.790","max":"1.860","min":"1.760","open":"1.810","referentiel":{"isin":"TN0007400013","stockName":"CARTHAGE CEMENT","ticker":"CC","valGroup":"51"},"seance":"2015-04-08 00:00:00.0","time":"14:08:29","trVolume":"75","volume":"127364.0","vto":"0.000","ychange":"0.00"},{"caps":"3502.7","change":"0.05","close":"18.330","cto":"0.000","high":"18.340","last":"18.340","low":"18.100","max":"18.890","min":"17.790","open":"18.340","referentiel":{"isin":"TN0007200017","stockName":"EL WIFACK LEASING","ticker":"WIFAK","valGroup":"11"},"seance":"2015-04-08 00:00:00.0","time":"14:05:01","trVolume":"191","volume":"191.0","vto":"0.000","ychange":"0.00"},{"caps":"593141.69","change":"-0.51","close":"29.200","cto":"0.000","high":"29.500","last":"29.050","low":"29.050","max":"30.170","min":"28.430","open":"29.300","referentiel":{"isin":"TN0001100254","stockName":"SFBT","ticker":"SFBT","valGroup":"11"},"seance":"2015-04-08 00:00:00.0","time":"14:05:00","trVolume":"20186","volume":"20186.0","vto":"0.000","ychange":"0.00"}]}
I tried many tutorials but it still gives me this error:
java.lang.RuntimeException: Unable to start receiver com.coolsandie.android.widget.HelloWidget: java.lang.NullPointerException
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2414)
java.net.SocketException: socket failed: EACCES (Permission denied)
How to use web service with android widget?
Thanks.
 
     
    