在Android 5中没有发生此错误,但现在我在android 6上测试我的应用程序,onEngineListener
总是返回UNKNOWN
错误。我有最新版本的HERE-maps SDK(3.1.1),我也在检查permissions at runtime。
如何初始化mapEngine? (我坚持认为它在android 5上工作得很好)
编辑:我正在试用我的Xperia Z3 Compact,使用Android 6.0.1并且出现UNKNOWN
错误,但我尝试使用的是具有Android 6.0的LG G4(我不认为6.0和6.0.1之间存在重大差异,并且效果很好。
这可能是一个设备问题,但它似乎很奇怪,因为该应用程序在我的Xperia上运行得很好,当它有Android 5.2
编辑2:这是我使用新3.2库的日志:
07-12 00:02:29.048 28388-28388/com.david.metroztest E/testFragment: details : Native engine initialization failed for unknown reason.
stackTrace : java.lang.Throwable
at com.nokia.maps.aq.a(EngineError.java:27)
at com.nokia.maps.MapsEngine$j.a(MapsEngine.java:731)
at com.nokia.maps.MapsEngine$j.a(MapsEngine.java:617)
at com.nokia.maps.MapsEngine$j.doInBackground(MapsEngine.java:601)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
我真的认为问题来自我的设备,因为这已在已知问题中添加:
Android 6.0存在一个已知问题,导致MapOffscreenRenderer在使用Qualcomm 800芯片组的设备上失败,例如Nexus 5.
我的设备有一个Qualcomm 801,所以问题可能来自这里
答案 0 :(得分:3)
在最新的3.2版本中,有一种方法可以获得更详细的信息。
您可以使用:
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
mapFragment.init(new OnEngineInitListener() {
@Override
public void onEngineInitializationCompleted(Error error) {
if (error == Error.NONE) {
//
} else {
Log.e(TAG, error.getDetails());
Log.e(TAG, error.getStackTrace());
}
}
});
示例:
maxRetrieve
答案 1 :(得分:0)
我们需要以下权限才能启动:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
由于您的应用程序仅请求ACCESS_FINE_LOCATION和WRITE_EXTERNAL_STORAGE,因此引擎会向您报告错误。
答案 2 :(得分:0)
在我的案例中,答案很简单,我使用的凭据是已过期的演示凭据。因此,请检查您是否使用了https://developer.here.com/projects/
中正确的AppId,AppCode和LicenseKey答案 3 :(得分:0)
我找到了解决此问题的方法:
我不得不更改磁盘缓存位置:
可以读取documentation here来将磁盘位置设置为设备上的新位置:
boolean success = com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath(Environment.getExternalStorageDirectory().getPath() + File.separator + ".isolated-here-maps", "com.example.intent");
if (success) {
MapEngine.getInstance().init(context, this);
}