帮助帮助..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;
}
这是日志猫(更新)..:
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 放入我的清单中。
你能找出导致错误的原因吗?代码没有错误..但它未能查看我的路线图..:( 感谢朋友