onEngineListener在android 6.0

时间:2016-06-20 17:40:30

标签: android here-api

在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,所以问题可能来自这里

4 个答案:

答案 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);
    }