I always get this error
public class FlightAvailabityGoActivity extends ListActivity {
String[] monthName = {"Jan", "Feb",
"Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov",
"Dec"
};
date userDate=new date();
int DepDay=userDate.getDays();
int DepMonth=userDate.getMonths();
bean beanz=new bean();
private TextView fromToTextView;
Calendar calendar = new GregorianCalendar();
String am_pm;
String TAG="from";
private TextView from,to;
languages lang=new languages();
String En_Ar=lang.getLang();
Element dest;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
try{
Log.v(TAG, "in go activity " +TAG);
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.listplaceholder_flightavailabity);
if(En_Ar.equals("arabic"))
{
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title_flightavailabity_ar);
// from=(TextView)findViewById(R.id.fromText);
// from.setText(" من ");
// to=(TextView)findViewById(R.id.toText);
//to.setText(" إلى ");
Log.v(TAG, "1 " +TAG);
}
else
{
Log.v(TAG, "1 " +TAG);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
R.layout.window_title_flightavailabity);
}
////
Bundle extras = getIntent().getExtras();
String FromCity = extras.getString("from");
String ToCity = extras.getString("to");
Log.v(TAG, "from city after moving " +FromCity);
Log.v(TAG, "to city after moving " +ToCity);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> mylist1 = new ArrayList<HashMap<String, String>>();
Log.v(TAG, "2 " +TAG);
//String xml = XMLfunctions.getXMLFlightAva(FromCity,ToCity);
String xml=XMLfunctions.getXMLFlightAva(FromCity,ToCity); // error is here
Log.v(TAG, "3 " +TAG); // this will not display
xml=xml.trim();
Log.v(TAG, "4 " +TAG);
I red about it and I understand its about using internet but I don't know how to solve it? as you can see I read XML by HTTP get in my XML function class and it returns XML in string here where every thing crashed
Do I have to change the class in String xml=XMLfunctions.getXMLFlightInfo(FromCity);
its the same method as
String xml=XMLfunctions.getXMLFlightAva(FromCity,ToCity);
this is the class
public class XMLfunctions {
String TAG;
public final static Document XMLfromString(String xml){
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (ParserConfigurationException e) {
System.out.println("XML parse error: " + e.getMessage());
return null;
} catch (SAXException e) {
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
} catch (IOException e) {
System.out.println("I/O exeption: " + e.getMessage());
return null;
}
return doc;
}
/** Returns element value
* @param elem element (it is XML tag)
* @return Element value otherwise empty String
*/
public final static String getElementValue( Node elem ) {
Node kid;
if( elem != null){
if (elem.hasChildNodes()){
for( kid = elem.getFirstChild(); kid != null; kid = kid.getNextSibling() ){
if( kid.getNodeType() == Node.TEXT_NODE ){
return kid.getNodeValue();
}
}
}
}
return "";
}
////////////////////////
public static String getXMLFlightInfo(String Y_or_T){
String line = null;
String TAG="TAG";
date userDate=new date();
int DepDay=userDate.getDays();
int DepMonth=userDate.getMonths();
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
// HttpPost httpPost = new HttpPost("http://p-xr.com/xml");
//HttpGet httpPost=new HttpGet("http://10.128.11.206:9080/mobile/FlightSchdIphoneServlet?depCity="+fromCity+"&arrCity="+toCity+"&day="+DepDay+"&month="+DepMonth+"");
//HttpGet httpPost=new HttpGet("http://mysv.net.sa/Web/mobile/FlightAvailIphoneServlet?depCity=JED&arrCity=RUH&day=29&month=11&submit=+GO+");
HttpGet httpPost=new HttpGet("http://10.131.13.43:9080/onlineSMS/xmlFlightInfo.html");
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
line = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
line = "<array status=\"error\"><msg>Can't connect to server</msg></array>";
} catch (MalformedURLException e) {
line = "<array status=\"error\"><msg>Can't connect to server</msg></array>";
} catch (IOException e) {
line = "<array status=\"error\"><msg>Can't connect to server</msg></array>";
}
return line;
}
StrictMode.ThreadPolicy was introduced since API Level 9 and the default behaviour had been changed in API Level 11, which in short, does not allow network operation (include HttpClient and HttpUrlConnection) get executed on UI thread.
The correct strategy is move network operation off the UI thread, for example using AsyncTask.
hope this help.