致命异常:AsyncTask#1

时间:2012-12-10 03:58:50

标签: android

help help..huu

我在这里有一个问题..似乎代码中没有错误..但是当我运行它...然后点击按钮查看地图编组路由地图..它突然间接近了......为什么就是它?请帮帮我朋友..

开发应用程序以读取我当前的位置并创建到A位置的路线..

以下是代码:

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;
                }

这是log cat(已更新)..:

    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

这是另一半我以前没有在这里张贴过它们:

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)

这是我的清单文件:

 <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>

为了您的信息,我已将ACCESS_NETWORK_STATE放入我的清单..

你能发现导致错误的原因吗?代码中没有错误..但它未能查看我的路线图.. :(谢谢朋友

3 个答案:

答案 0 :(得分:1)

根据您的日志,您没有此权限

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

此权限允许您访问您的网络设备(Wifi,3G,蓝牙等)的状态 设备

答案 1 :(得分:1)

  

E / AndroidRuntime(5368):引起:java.lang.SecurityException:   ConnectivityService:用户10228和当前进程都没有   android.permission.ACCESS_NETWORK_STATE。

确保您在android.permission.ACCESS_NETWORK_STATE文件中添加了AndroidManifest.xml权限

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

编辑:

删除

<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"
/>  

来自AndroidManifest.xml的此代码,并将其放在项目中res / layout文件夹中的任何xml布局中

答案 2 :(得分:0)

不是100%肯定,但似乎你得到这个,因为你试图在后台检查do的网络可用性。你能尝试在onpreexecute中查看吗?