【发布时间】:2013-06-26 05:34:23
【问题描述】:
我发现,我使用 yandex 地图工具包的应用在某些设备上会因此类异常而崩溃。这个“java.lang.UnsupportedOperationException”异常是什么意思???
06-26 16:25:06.301: ERROR DeviceIdProvider(3174): UNKNOWN ID QUERY content://ru.yandex.device.id.maps/device_id id -1
06-26 16:25:06.301: ERROR/DatabaseUtils(3174): Writing exception to parcel
java.lang.UnsupportedOperationException: query: Not supported yet - content://ru.yandex.device.id.maps/device_id
at ru.yandex.core.device.id.DeviceIdProvider.query(SourceFile:80)
at android.content.ContentProvider$Transport.query(ContentProvider.java:178)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
at android.os.Binder.execTransact(Binder.java:338)
at dalvik.system.NativeStart.run(Native Method)
06-26 16:25:06.511: ERROR/dalvikvm(533): GC_FOR_ALLOC freed 2221K, 41% free 9496K/16035K, paused 7ms+22ms
06-26 16:25:06.781: ERROR/AndroidRuntime(3690): FATAL EXCEPTION: AsyncTask #3
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:278)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at com.shop.pagerFragments.TorgCentrMapFragment$SetRightMapDisplayAddress.doInBackground(TorgCentrMapFragment.java:419)
at com.shop.pagerFragments.TorgCentrMapFragment$SetRightMapDisplayAddress.doInBackground(TorgCentrMapFragment.java:401)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.
concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more
这里是 doInBackground 方法:
private class SetRightMapDisplayAddress extends AsyncTask<String, Void, List<Address>> {
@Override
protected List<Address> doInBackground(String... params) {
Log.d(TAG, "doinbackground SetRightMapDisplayAddress started");
long startTime= System.currentTimeMillis();
long threadId = Thread.currentThread().getId();
Log.d(TAG, String.format("The thread id is: %d", threadId));
context = getActivity();
String placeName = params[0];
Geocoder geocoder = new Geocoder(context);
List<Address> addressList = null;
try {
addressList = geocoder.getFromLocationName(placeName, 3);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
int returnedAddresses = addressList.size();
Log.d(TAG, String.valueOf(returnedAddresses));
long endTime = System.currentTimeMillis();
Log.d(TAG, String.valueOf(startTime-endTime));
Log.d(TAG, "doinbackground SetRightMapDisplayAddress ended");
return addressList;
}
提前感谢您的回答!
【问题讨论】:
-
context = getActivity()这是做什么的?如果需要上下文,则需要将活动上下文传递给 asynctask 的构造函数 -
SourceFile 中的第 80 行在哪里。
-
第 80 行是编译后的代码,什么也不显示))
-
这些设备有什么共同点吗?喜欢小于“X”的 Android-API 版本?
-
设备运行的是android 4.0