J'ai 2 appareils. Droid x3 w/Gingerbread et un Nexus 7 w/Jellybean 4.2.2. Je compile et exécute ce code sur mon Droid x3 et il fonctionne parfaitement. Pourtant, le même code que je cours sur le Nexus 7 et il casse.Android code fonctionne très bien sur Gingerbread, mais se brise sur Nexus 7 w/4.2.2
Tracé de code et de pile inclus.
Merci pour l'aide!
package com.jacobschellenbergflickrsearch;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class DataDownloader {
String apiKey = "bc370c6386192bf6e2f950cdfddfda48";
//String url = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=bc370c6386192bf6e2f950cdfddfda48&nojsoncallback=1&text=monkey&format=json&per_page=10";
public String buildUrl(String searchMethod, String searchQuery, int perpage){
String url = String.format("http://api.flickr.com/services/rest/?method=%s&api_key=%s&nojsoncallback=1&text=%s&format=json&per_page=%s", searchMethod, this.apiKey, searchQuery, perpage);
String result = null;
try{
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
InputStream ips = response.getEntity().getContent();
BufferedReader buf = new BufferedReader(new InputStreamReader(ips,"UTF-8"));
StringBuilder sb = new StringBuilder();
String s;
while(true)
{
s = buf.readLine();
if(s==null || s.length()==0){
break;
}
sb.append(s);
}
buf.close();
ips.close();
result = sb.toString();
}
catch (IllegalStateException e) {
e.printStackTrace();
result = "IllegalStateException";
}
catch (IOException e) {
e.printStackTrace();
result = "IOException";
} catch (URISyntaxException e) {
e.printStackTrace();
result = "URISyntaxException";
}
return "Query: " + url + " : Result: " + result;
}
}
05-01 13: 47: 04,742: D/AndroidRuntime (4526): Arrêt VM 01/05 13: 47: 04,742: W/dalvikvm (4526): threadid = 1: fil sortie avec exception non interceptée (groupe = 0x41377930) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): FATAL EXCEPTION: principal 05-01 13: 47: 04.752: E/AndroidRuntime (4526): java. lang.IllegalStateException: Impossible d'exécuter la méthode de l'activité 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au android.view.View $ 1.onClick (View.java:3599) 05-01 13 : 47: 04.752: E/André oidRuntime (4526): à android.view.View.performClick (View.java:4204) 05-01 13: 47: 04,752: E/AndroidRuntime (4526): à android.view.View $ PerformClick.run (View.java:17355) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au android.os.Handler.handleCallback (Handler.java:725) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au android.os.Handler.dispatchMessage (Handler.java:92) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au android.os.Looper.loop (Looper .java: 137) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au android.app.ActivityThread.main (ActivityThread.java:5041) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au java.lang.reflect.Method.invokeNative (méthode native) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): à java.lang.reflect.Method.invoke (Method.java:511) 05 -01 13: 47: 04.752: E/AndroidRuntime (4526): au com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au dalvik.system.NativeStart. main (Méthode native) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): Causée par: java.lang.reflect.InvocationTargetException 05-01 13: 47: 04.752: E/AndroidRuntime (4526): à java.lang.reflect.Method.invokeNative (Méthode native) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): à java.lang.reflect.Method.invoke (Method.java:511) 05 -01 13: 47: 04.752: E/AndroidRuntime (4526): au android.view.View $ 1.onClick (View.java:3594) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): E/AndroidRuntime (4526): Causé par: android.os.NetworkOnMainThreadException 05-01 13: 47: 04.752: E/AndroidRuntime (4526): à android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1117) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): à java.net.InetAddress.lookupHostByName (InetAddress.j ava: 385) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au java.net.InetAddress.getAllByNameImpl (InetAddress.java:236) 05-01 13:47:04.752: E/AndroidRuntime (4526): au java.net.InetAddress.getAllByName (InetAddress.java:214) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au org.apache.http. impl.conn.DefaultClientConnectionOperator.openConnection (DefaultClientConnectionOperator.java:137) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au org.apache.http.impl.conn.AbstractPoolEntry.open (AbstractPoolEntry.java : 164) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au org.apache.http.impl.conn.AbstractPooledConnAdapter.open (AbstractPooledConnAdapter.java:119) 05-01 13:47: 04.752: E/AndroidRuntime (4526): au org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java:360) 05-01 13: 47: 04.752: E/Et roidRuntime (4526): au org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:555) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au org.apache. http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:487) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient .java: 465) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au com.jacobschellenbergflickrsearch.DataDownloader.buildUrl (DataDownloader.java:31) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): au com.jacobschellenbergflickrsearch.MainActivity.searchImage (MainActivity.java:47) 05-01 13: 47: 04.752: E/AndroidRuntime (4526): ... 14 plus 05-01 13: 47: 04,802: D/dalvikvm (4526): GC_CONCURRENT libéré 210K, 5% sans 7474K/7812K, en pause de 5 ms + 2 ms, 46ms totale