1

Whenever I try to initialize the map, I always get the "error UNKNOWN" message.

I tried the examples from HERE, but I get the same error on all of them. So I made a very simple and clean application with the sole purpose of loading the map. It still doesn't work and I can't put my finger on it.

I'm using Android, trying to target version 4.4 (KitKat). I am using the Premium SDK (during the 90 day trial). I verified the app key, code and licence key many times now. They are absolutely correct.

The registered package name is

com.example.workywork

but in the manifest I have:

package="com.example.workywork.testherepremium"

(It was supposed to be a test, so don't mind the package name :) ) I think it is right, since they asked for package name, not for package name + project name.

Here is the code from my simple application:

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'

}

Activity layout:

<?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>

Activity

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>

I also tried to use

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

with

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

or

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

Or any other such combination.

What am I missing?

As you can see, I've been struggleing with this for a couple of days now ;) Thank you very much for your help. It is greatly appreciated.

1 Answer 1

1

The applicationId has to match the registered name exactly (in your case com.example.workywork). Otherwise, I can't spot an issue with the code you've posted.

You can try following this guide: Creating a Simple Application Using the HERE SDK

Sign up to request clarification or add additional context in comments.

2 Comments

Thank you for your quick reply. I assumed so, but it worked perfectly with the basic SDK. I'll try another approach today and post the results.
Thank you once again. I finally managed to make it work. For all of us who make a distinction between package and project name, the registered package name must include the project's name. In my case com.example.workywork.testherepremium The weirdest part is that it worked perfectly with the Basic SDK, even if the registered package name was obviously wrong.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.