致命异常:#的AsyncTask 1

问题描述:

帮助help..huu致命异常:#的AsyncTask 1

林有一个问题here..seems当我运行它...然后点击按钮来查看地图由路由出现在codes..but没有错误地图......它似乎突然间关闭了。那是为什么?请帮我啦..

即时通讯开发一个应用程序读取我的当前位置,并创建路由向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; 
       } 

这是日志猫(更新)..:

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 [email protected] 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 [email protected] 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> 

为了您的信息,我已经把许可权在我的清单..

u能发现什么导致错误?在code..but没有错误时没有审查我的路线图.. :(感谢网友

E/AndroidRuntime(5368):由:java.lang.SecurityException异常: ConnectivityService:无论用户10228也不当前进程 android.permission.ACCESS_NETWOR K_STATE。

确保你已经添加android.permission.ACCESS_NETWORK_STATE许可,不得以AndroidManifest.xml文件

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

编辑:

AndroidManifest.xml删除

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

这个代码,并把它的任何XML布局内您项目中的res/layout文件夹

+0

Yeah..Ive忘了补充一点, ..thanks!已经did..but问题保持不变.. :( –

+0

发表您的AndroidManifest.xml也 –

+0

行已经做了:) –

根据你的日志,你没有这个权限

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

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

+0

是的..我忘了补充说..谢谢!已经did..but问题保持不变.. :( –

+0

请更新您的日志中 – 2012-12-10 04:07:47

+0

已经做了..但它一直在说,因为它是不是在logcat的.. fiuhhh –

不是100%肯定,但似乎你是因为你尝试检查网络可用性从做背景。你可以尝试在onxreexecute中检查它吗?

+0

是Droider,它是..我应该改变它吗? –

+0

是的,我通常会在“新BackgroundTask(this,loc,destination).execute();”之前的主线程中检查网络可用性。我认为这应该工作,如果你把支票在那里 – Calvin

+0

检查?如何做@Droider –