错误:无法使用错误UNKNOWN初始化Map

时间:2017-11-29 11:43:02

标签: here-api

每当我尝试初始化地图时,我总会得到"错误UNKNOWN"消息。

我试过这里的例子,但是我对它们都有同样的错误。所以我制作了一个非常简单和干净的应用程序,其唯一目的是加载地图。它仍然无法工作,我无法指责它。

我正在使用Android,尝试定位4.4版(KitKat)。 我正在使用Premium SDK(在90天试用期间)。 我现在多次验证了应用密钥,代码和许可证密钥。他们绝对正确。

注册的包名称是

com.example.workywork

但在清单中我有:

package="com.example.workywork.testherepremium"

(这应该是一个测试,所以不要介意包名:)) 我认为这是对的,因为他们要求包名,而不是包名+项目名。

以下是我的简单应用程序中的代码:

的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.workywork.testherepremium"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    implementation (name: 'HERE-sdk', ext: 'aar')
    implementation 'com.vividsolutions:jts:1.13'
    implementation 'com.google.code.gson:gson:2.8.0'

}

活动布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.workywork.testherepremium.MainActivity">

    <fragment
        class="com.here.android.mpa.mapping.MapFragment"
        android:id="@+id/mapfragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.constraint.ConstraintLayout>

活动

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.here.android.mpa.common.GeoCoordinate;
import com.here.android.mpa.common.OnEngineInitListener;
import com.here.android.mpa.mapping.Map;
import com.here.android.mpa.mapping.MapFragment;

public class MainActivity extends AppCompatActivity {

    MapFragment mapFragment;

    Map map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);

        mapFragment.init(new OnEngineInitListener() {
            @Override
            public void onEngineInitializationCompleted(OnEngineInitListener.Error error) {

                if (error == Error.NONE) {
                    map = mapFragment.getMap();
                    map.setCenter(new GeoCoordinate(49.259149, -123.008555),
                            Map.Animation.LINEAR);
                    map.setZoomLevel(13.2);

                } else {
                    Toast.makeText(getApplicationContext(),"ERROR: Cannot initialize Map with error " + error,
                            Toast.LENGTH_LONG).show();
                    Log.e("mymsg", error.getStackTrace());
                    Log.e("mymsg", error.getDetails());
                }
            }
        });
    }
}

的AndroidManifest.xml

...
    <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"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <!--Developers should put application credentials here.To obtain them, please register the application
        at https://developer.here.com/develop/mobile-sdks-->
        <meta-data android:name="com.here.android.maps.appid" android:value="-- app id --"/>
        <meta-data android:name="com.here.android.maps.apptoken" android:value="-- app token --"/>
        <meta-data android:name="com.here.android.maps.license.key" android:value="-- license --" />

        <service
            android:name="com.here.android.mpa.service.MapService"
            android:label="HereMapService"
            android:process="global.Here.Map.Service.v3"
            android:exported="true">
            <intent-filter>
                <action android:name="com.here.android.mpa.service.MapService.v3">
                </action>
            </intent-filter>
        </service>
    </application>

我也尝试使用

android:process="global.Here.Map.Service.v2"

android:name="com.here.android.mpa.service.MapService"

android:name="com.here.android.mpa.service.MapService.v2"

或任何其他此类组合。

我错过了什么?

正如你所看到的,我现在已经为此困难了几天;) 非常感谢您的帮助。非常感谢。

1 个答案:

答案 0 :(得分:1)

applicationId必须与注册名称完全匹配(在您的情况下为com.example.workywork)。否则,我无法发现您发布的代码的问题。

您可以尝试遵循本指南:Creating a Simple Application Using the HERE SDK