An app id is required for production level apps. The app id gives your app special permissions to access vehicle data. If your app does not need to access vehicle data, a dummy app id (i.e. creating a fake id like "1234") is sufficient during the development stage. However, you must get an app id before releasing the app to the public.
To obtain an app id, sign up at smartdevicelink.com.
Some permissions are required to be granted to the SDL app in order for it to work properly. In the AndroidManifest file, we need to ensure we have the following system permissions:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.mySdlApplication"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> </manifest>
If the app is targeting Android P (API Level 28) or higher, the Android Manifest file should also have the following permission to allow the app to start a foreground service:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
If targeting Android R (API Level 30) or higher, it is required to add the SDL specific entries into the app's
queries tag in the
AndroidManifest.xml. If the tag already exists, just the intents need to be added. If the tag does not yet exist in the manifest, they can be added after the permissions are declared but before the
application tag is opened.
<queries> <intent> <action android:name="com.smartdevicelink.router.service" /> </intent> <intent> <action android:name="sdl.router.startservice" /> </intent> </queries>
The SDL Android library uses these queries to determine which app should host the router service, what apps to notify when there's an SDL connection, etc. As will be seen in the next sections, these intents are used in the intent filters for the
SdlRouterService and the