Nadirah Ibtisam
Nadirah Ibtisam

Reputation: 67

Fatal Exception : AsyncTask #1

help help..huu

Im having a problem here..seems there was no error in codes..but when I run it...and click button to view map consist routing the map..It appers to be close all of sudden..why is that? Please help me friends..

Im developing an app to read my current location and creating route to A position..

here are the codes:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);

    onNewIntent(getIntent());

    Drawable marker = getResources().getDrawable(R.drawable.marker);
    Drawable marked_places = getResources().getDrawable(R.drawable.feringgi_map);

    mymap = (MapView)findViewById(R.id.mymap);
    controller = mymap.getController();
    // extract MapView from layout
    mymap.getController().setZoom(15);
    mymap.setBuiltInZoomControls(true);
    mymap.setSatellite(false);

    // create an overlay that shows our current location
    myLocationOverlay = new MyLocationOverlay(this, mymap);

    // add this overlay to the MapView and refresh it
    mymap.getOverlays().add(myLocationOverlay); 
    mymap.postInvalidate();

    myLocationOverlay.runOnFirstFix(new Runnable() {

        @Override
        public void run() {
            controller.setZoom(10);
            controller.animateTo(myLocationOverlay.getMyLocation());                
        }
    });

    zoomToMyLocation();

   switch(selecteditem)
   {
   case 0:        switch(selectedsubitem){
            case 0://Place A       
                    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
                  locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
                  Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                      if (location !=null) {
                      loc=location;
                  }
                  GeoPoint destination = getPoint(3.144341, 101.69541800000002);
                  new BackgroundTask(this, loc, destination).execute();
                break;              
}
}

 class BackgroundTask extends AsyncTask<Void, Void, Void> {

        private Location location;
        private GeoPoint dest;
        private Route route;
        private Activity activity;
        private ProgressDialog dialog;
        private RouteOverlay routeOverlay;

        public BackgroundTask(Activity activity, Location loc, GeoPoint dest) {
            location=loc; 
            this.dest=dest;
            this.activity=activity;
            dialog = new ProgressDialog(activity);
        }

        @Override
        protected void onPreExecute() {
            dialog.setCancelable(false);
            dialog.setTitle("Loading...");
            dialog.setMessage("Calculating Route...");
            dialog.setButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(final DialogInterface dialog, final int id) {
                  cancel(true);
                  MyMap.this.finish();
                }});
            dialog.show();
        }

protected Void doInBackground(Void... params) {
                if(isNetworkAvailable())
                {
                    if(haveInternet())
                    {   try{
                            route = directions(new GeoPoint((int)(location.getLatitude()*1.0E6),(int)(location.getLongitude()*1.0E6)), dest); 
                        }
                        catch (NullPointerException e){ }
                    }
                    else
                    {   return null;
                    }
                }
                else
                {   return null; }

                return null;
                }

And this is the log cat (updated).. :

    12-10 13:30:36.677: E/AndroidRuntime(13405): FATAL EXCEPTION: AsyncTask #1
12-10 13:30:36.677: E/AndroidRuntime(13405): java.lang.RuntimeException: An error occured while executing doInBackground()
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.lang.Thread.run(Thread.java:856)
12-10 13:30:36.677: E/AndroidRuntime(13405): Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10228 nor current process has android.permission.ACCESS_NETWORK_STATE.
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.os.Parcel.readException(Parcel.java:1327)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.os.Parcel.readException(Parcel.java:1281)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:728)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:378)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at com.madcatworld.testtesttest.MyMap$BackgroundTask.isNetworkAvailable(MyMap.java:488)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at com.madcatworld.testtesttest.MyMap$BackgroundTask.doInBackground(MyMap.java:411)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at com.madcatworld.testtesttest.MyMap$BackgroundTask.doInBackground(MyMap.java:1)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
12-10 13:30:36.677: E/AndroidRuntime(13405):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-10 13:30:36.677: E/AndroidRuntime(13405):    ... 5 more

this is the other half I havent post them here previously:

12-10 13:30:37.308: E/WindowManager(13405): Activity com.madcatworld.testtesttest.MyMap has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4254bb28 that was originally added here
12-10 13:30:37.308: E/WindowManager(13405): android.view.WindowLeaked: Activity com.madcatworld.testtesttest.MyMap has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4254bb28 that was originally added here
12-10 13:30:37.308: E/WindowManager(13405):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:344)
12-10 13:30:37.308: E/WindowManager(13405):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267)
12-10 13:30:37.308: E/WindowManager(13405):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
12-10 13:30:37.308: E/WindowManager(13405):     at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
12-10 13:30:37.308: E/WindowManager(13405):     at android.view.Window$LocalWindowManager.addView(Window.java:537)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.Dialog.show(Dialog.java:278)
12-10 13:30:37.308: E/WindowManager(13405):     at com.madcatworld.testtesttest.MyMap$BackgroundTask.onPreExecute(MyMap.java:406)
12-10 13:30:37.308: E/WindowManager(13405):     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
12-10 13:30:37.308: E/WindowManager(13405):     at android.os.AsyncTask.execute(AsyncTask.java:511)
12-10 13:30:37.308: E/WindowManager(13405):     at com.madcatworld.testtesttest.MyMap.onCreate(MyMap.java:108)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.Activity.performCreate(Activity.java:4465)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
12-10 13:30:37.308: E/WindowManager(13405):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-10 13:30:37.308: E/WindowManager(13405):     at android.os.Looper.loop(Looper.java:137)
12-10 13:30:37.308: E/WindowManager(13405):     at android.app.ActivityThread.main(ActivityThread.java:4424)
12-10 13:30:37.308: E/WindowManager(13405):     at java.lang.reflect.Method.invokeNative(Native Method)
12-10 13:30:37.308: E/WindowManager(13405):     at java.lang.reflect.Method.invoke(Method.java:511)
12-10 13:30:37.308: E/WindowManager(13405):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
12-10 13:30:37.308: E/WindowManager(13405):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
12-10 13:30:37.308: E/WindowManager(13405):     at dalvik.system.NativeStart.main(Native Method)

This is my manifest file:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.madcatworld.testtesttest"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="15" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.CALL_PHONE"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >

            <com.google.android.maps.MapView
            android:id="@+id/mymap"
            android:clickable="true"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:apiKey="XXXX"
            />       

            <activity
                android:theme="@style/StyledIndicators"
                android:name=".MainTest"
                android:label="@string/title_activity_main" 
                android:screenOrientation="portrait">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <uses-library android:name="com.google.android.maps"/>
            <activity android:name="A"
                android:screenOrientation="portrait"></activity>
            <activity android:name="B"
                android:screenOrientation="portrait"></activity>
            <activity android:name="C"
                android:screenOrientation="portrait"></activity>
        </application>

    </manifest>

For your information, I already put ACCESS_NETWORK_STATE in my manifest..

Can u discover what cause the error? No error in code..but it failed to review my route map..:( Thanks Friends

Upvotes: 0

Views: 3704

Answers (3)

Calvin
Calvin

Reputation: 634

Not 100% sure but it seems you get this because you try to check network availability from do in background. Can you try to check it in onpreexecute?

Upvotes: 0

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132972

E/AndroidRuntime(5368): Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10228 nor current process has android.permission.ACCESS_NETWORK_STATE.

make sure you have added android.permission.ACCESS_NETWORK_STATE permission in AndroidManifest.xml file as

<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

EDIT :

remove

<com.google.android.maps.MapView
android:id="@+id/mymap"
android:clickable="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="XXXX"
/>  

this code from AndroidManifest.xml and put it inside any xml layout within res/layout folder in your project

Upvotes: 1

user948620
user948620

Reputation:

According to your log you don't have this permission

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

This permission allows you to access the state of network device (Wifi, 3G, bluetooth, etc..) of your device

Upvotes: 1

Related Questions