Developer Console

General Troubleshooting

This page contains common issues integrating with the Fire TV Integration SDK.

SDK logs are not generating on the device

Device is not supported
Make sure you are using a supported device. Check with your Amazon contact for a list of device types currently supported.
Device software is outdated
If you are using a supported device, make sure that you have installed the latest software. Navigate to Settings > My Fire TV > About and then click Check for Updates.
Artifact not included in app correctly
If you are using a supported device and have the latest software, double check that you have the artifact included in your app correctly. For additional details, see Include the SDK in your app.

App is calling the SDK and generating SDK logs but no content appears in the Continue Watching Row

Checkpoint #1 - Confirm feature is enabled
Validate that your CustomerID is enabled for the Content Personalization feature by navigating to Settings > Preferences > Privacy Settings > Manage Sharing from Apps. If the Manage Sharing from Apps option is missing, contact your Amazon contact and provide your CustomerID and DSN.
Expected menu items under Settings > Preferences > Privacy Settings
Checkpoint #2 - Confirm your app is allowlisted
Confirm that your app is allowlisted by navigating to Settings > Preferences > Privacy Settings > Manage Sharing from Apps > Manage by App. If your app is not included:
  1. Make sure your app is installed on the device, this list only shows installed apps.
  2. Select Sync Amazon Content and wait up to 15 minutes before checking the list again.
  3. If the app is still missing from the list, reach out to your Amazon contact and provide your CustomerID, DSN, and the package name you are using for development.
Your app should appear in this list under Settings > Preferences > Privacy Settings > Manage Sharing from Apps > Manage By App
Checkpoint #3 - Confirm the feature is turned on
Once you have confirmed your app is allowlisted, make sure you have enabled the feature by navigating to Settings > Preferences > Privacy Settings > Manage Sharing from Apps and setting the Share App Viewing and Content Info feature to ON.
Share App Viewing and Content Info should be set to ON
I still can’t find my app
Confirm that you have met all of the following:
  • are using a supported device with all of the latest updates
  • have completed up to Get Started with the Fire TV Integration SDK - Step 4
  • have confirmed feature enablement and app allowlisting in Checkpoint #3
  • have confirmed that you are using a CDF ID that appears in your catalog file

If you’re still unable to see content appear in the Continue Watching Row, report a bug through your Amazon contact.

The data integration service is not being called by the Fire TV system

This capability has not yet been enabled but you must implement this as part of the integration. Amazon will validate the implementation internally.

The SDK feature check is returning true but the device is not showing the Continue Watching Row

Some devices may be capable of loading the SDK library but are not fully supported yet for the Continue Watching experience. The feature check only indicates if the library is available and does not guarantee feature availability. We recommend you still include calls to the SDK on device as these devices may be supported in the future. Your Amazon contact can share the list of current devices supporting the Continue Watching Feature.

The Continue Watching Row is not working as expected

See Troubleshooting.

Handling scenarios where background processes end

When foreground processes need memory, Android OS stops other processes to free up memory. However, the activity history stays in the activity stack. The next time the activity is started, it is launched using the original launch intent prior to when the process was stopped. The second, most up-to-date intent, occurs next using the onNewIntent() callback.

Background information

Android's process flow

Knowing the process flow will help you understand how processes and intents are used by the OS.

  1. 3P app (Activity A) is started with a deeplink intent (Intent A).
  2. ActivityA.onCreate() is called, and getIntent() will yield Intent A.
  3. Activity A is moved to the background, and the customer may use other apps and features.
  4. The Android low memory killer daemon (lmkd) stops Activity A to free up memory.
  5. ActivityA.onDestroy() is called and then the Activity A process is stopped.

  6. Activity A starts later with a different use case, and a different intent (Intent B).
  7. ActivityA.onCreate() is called, but getIntent() will still yield Intent A.
    1. If using a non-standard launch mode, such as singleTop, singleTask, or singleInstance, Android OS will check if an activity already exists for a task, and will try to route the intent with the onNewIntent() callback.
    2. For standard launch mode, the you must create a new instance of the target task, and deliver the intent to that new instance.
  8. ActivityA.onNewIntent() is called next, with Intent B as the intent in the callback.
Saving states across instances

When a process ends in the background by Android OS, the system first calls onSaveInstanceState(Bundle) so the activity can save state information to an instance state bundle. In onCreate() during the next activity startup, a saved instance bundle can be used to indicate that the process is restarted after Android OS ends it, or if it is a newly started activity.

The activity won’t end to free up memory, but the process the activity runs in will be stopped. When recreating an activity, the saved instance can be recovered from the bundle.

For more information, see the following:

If a deeplink does not seem to work, it may be because a previous intent, rather than the latest intent, has been chosen. There are two ways to fix this issue.

Option 1

The first option is to use the most up-to-date intent that’s received from your app. If deeplinks don't show the correct information, it may be because you aren't using the most recent intent. All intents other than the most recent are dropped or ignored by the system.

For more information, see onNewIntent().

Option 2

Instead of option 1, you can use a dedicated activity to receive and forward the deeplink. The advantage of this is that after processing the deeplink, the activity can call finish(), removing it from the activity history. The next time it’s started, it will contain the most up-to-date intent when using getIntent() from lifecycle callbacks like onCreate(). Then the system won’t need to wait for an onNewIntent() callback.


Last updated: Oct 25, 2024