2012-12-10 99 views
0

幫助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沒有錯誤時沒有審查我的路線圖.. :(感謝網友

回答

1

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

行已經做了:) –

1

根據你的日誌,你沒有這個權限

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

此權限允許您訪問狀態您的 設備的網絡設備(WIFI,3G,藍牙,等等。)的

+0

是的..我忘了補充說..謝謝!已經did..but問題保持不變.. :( –

+0

請更新您的日誌中 – 2012-12-10 04:07:47

+0

已經做了..但它一直在說,因爲它是不是在logcat的.. fiuhhh –

0

不是100%肯定,但似乎你是因爲你嘗試檢查網絡可用性從做背景。你可以嘗試在onxreexecute中檢查它嗎?

+0

是Droider,它是..我應該改變它嗎? –

+0

是的,我通常會在「新BackgroundTask(this,loc,destination).execute();」之前的主線程中檢查網絡可用性。我認爲這應該工作,如果你把支票在那裏 – Calvin

+0

檢查?如何做@Droider –