For some reason, when adding the uses-sdk fields in Android's manifest file causes crash. I've not had this happen before but I can't get rid of it now.
The relevant portion of the manifest file is as follows:
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
moving the permission line above, or below the uses-sdk clause makes no difference, nor does changing the minimum or target version. No matter what is selected (within reason because I can't go back to API 8, or 10, or any really early level) the application crashes if the uses-sdk clause is in the file.
Removing it allows it to run.
The error I get is the "unfortunately [app] has stopped" default and there's an associated "FATAL EXCEPTION: main" error in the logcat listing.
Any help or suggestions are appreciated.
Thank you!
This is an example of a book I'm working through (or trying to I should say). :)
I'm adding the complete logcat listing below.
10-03 13:29:18.270: E/Trace(860): error opening trace file: No such file or directory (2)
10-03 13:29:18.950: D/AndroidRuntime(860): Shutting down VM
10-03 13:29:18.950: W/dalvikvm(860): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
10-03 13:29:18.960: E/AndroidRuntime(860): FATAL EXCEPTION: main
10-03 13:29:18.960: E/AndroidRuntime(860): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.paad.earthquake/com.paad.earthquake.Earthquake}: android.os.NetworkOnMainThreadException
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.os.Handler.dispatchMessage(Handler.java:99)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.os.Looper.loop(Looper.java:137)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-03 13:29:18.960: E/AndroidRuntime(860): at java.lang.reflect.Method.invokeNative(Native Method)
10-03 13:29:18.960: E/AndroidRuntime(860): at java.lang.reflect.Method.invoke(Method.java:511)
10-03 13:29:18.960: E/AndroidRuntime(860): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-03 13:29:18.960: E/AndroidRuntime(860): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-03 13:29:18.960: E/AndroidRuntime(860): at dalvik.system.NativeStart.main(Native Method)
10-03 13:29:18.960: E/AndroidRuntime(860): Caused by: android.os.NetworkOnMainThreadException
10-03 13:29:18.960: E/AndroidRuntime(860): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
10-03 13:29:18.960: E/AndroidRuntime(860): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
10-03 13:29:18.960: E/AndroidRuntime(860): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
10-03 13:29:18.960: E/AndroidRuntime(860): at java.net.InetAddress.getAllByName(InetAddress.java:214)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
10-03 13:29:18.960: E/AndroidRuntime(860): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
10-03 13:29:18.960: E/AndroidRuntime(860): at com.paad.earthquake.EarthquakeListFragment.refreshEarthquakes(EarthquakeListFragment.java:77)
10-03 13:29:18.960: E/AndroidRuntime(860): at com.paad.earthquake.EarthquakeListFragment.onActivityCreated(EarthquakeListFragment.java:55)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:848)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1017)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1802)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.Activity.performCreate(Activity.java:5011)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-03 13:29:18.960: E/AndroidRuntime(860): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-03 13:29:18.960: E/AndroidRuntime(860): ... 11 more
As @Sameer said, you are doing network calls in the core of your Activity. You should NEVER do that. All the code of your activity run on the main thread : the one that is used for the UI. You should not make any heavy calculation on that thread : it takes resources away from the UI, making it lag. An http call is even worse : as long as you don't have the response the UI is blocked.
Implement your network calls in an AsyncTask.
The error is
NetworkOnMainThreadException
Starting with ICS, you cannot do any network access on main thread. You should probably useAsyncTask
where you do network access.