Android TV Remote - App Links/Deep Linking - Guide

Does anyone have KPNiTV working yet?

No, I did not. Seems to be impossible.

Ever since the Bally Sports app just recently got updated it won’t open the app anymore using “ballysports://” I tried looking up the updated app and AndroidManifest.xml and it seems to be using the same as before but Idk.

Hello, everyone,
I’d like to launch this APK application on my Android TV, but I can’t find a name. Here’s what I have in the intent-filter.

 <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        <intent>
            <action android:name="android.intent.action.VIEW"/>
            <data android:scheme="https"/>
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="https"/>
        </intent>'

Can you help me ?

Thanks,

Any ideas? @tronikos

Try one of the alternative ones: e.g. ballysports.app.link:// etc.

Hi,
Nice thread, thanks a lot for manual.
I can add one Polish app call with live tv WP Pilot (Bezpłatna telewizja online - oglądaj za darmo tv przez Internet - Pilot WP): Works(without “”): “redirwppilot://” and “https://pilot.wp.pl/

Do anyone maybe can share call for TVN Player app ? I decompiled APK and manifest file contain @string but I cannot find String.xml
I tried: “pl.tvn.player://” “Seriale, Filmy, Programy, kanały TV Online - wejdź i oglądaj na Player.pl” “Kanały na żywo, oglądaj przez internet na Player.pl” “https://player.pl/” but no luck.

Hello,
I was searching for the deep link for “TV Vlaanderen” (Belgium) Trial and error resulted in this working link:

https://tvapi.solocoo.tv

Is someone able to add this one to the list please?

I suspect that the link also works for “Canal Digitaal” (Netherlands), can someone with a Canal Digital subscription check and confirm please?

1 Like

Does the YoutubeTV URL still work for anyone as a content_id?
https://tv.youtube.com/

Hi

Do someone know if it is possible to change HDMI input source with the android tv/ google tv

It looks like someone did make it work, but I am not sure what differance between Android Remote and Android Debug Bridge is, do I need them both ?

Hey all,

trying to find something about Cosmote TV App. At this time i see this : gr.cosmote.cosmotetv.androidtv

any ideas ?

Hello all,
I’m able to adb shell and dump the application but I’m not understanding what should I look for after the dump.

DUMP OF SERVICE package:
Activity Resolver Table:
  Full MIME Types:
      vnd.android.cursor.item/program:
        eda0e97 com.alticelabs.meo.androidtv/.features.deeplink.DeepLinkActivity filter 9a6fd33
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Scheme: "content"
          Scheme: "intent"
          Authority: "android.media.tv": -1
          Path: "PatternMatcher{LITERAL: /program}"
          Path: "PatternMatcher{LITERAL: /recorded_program}"
          StaticType: "vnd.android.cursor.dir/recorded_program"
          StaticType: "vnd.android.cursor.item/channel"
          StaticType: "vnd.android.cursor.dir/channel"
          StaticType: "vnd.android.cursor.item/program"
          StaticType: "vnd.android.cursor.dir/program"
      vnd.android.cursor.dir/program:
        eda0e97 com.alticelabs.meo.androidtv/.features.deeplink.DeepLinkActivity filter 9a6fd33
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Scheme: "content"
          Scheme: "intent"
          Authority: "android.media.tv": -1
          Path: "PatternMatcher{LITERAL: /program}"
          Path: "PatternMatcher{LITERAL: /recorded_program}"
          StaticType: "vnd.android.cursor.dir/recorded_program"
          StaticType: "vnd.android.cursor.item/channel"
          StaticType: "vnd.android.cursor.dir/channel"
          StaticType: "vnd.android.cursor.item/program"
          StaticType: "vnd.android.cursor.dir/program"

Can anyone help me understanting what should I look for getting the app and icon for MEO (Portuguese Android App)?

I wasn’t able to understand what I should look for but I have found that in this case, the code should be something around this

meo:
    icon: mdi:television
    source: ottapp://
    style:
      color: rgb(245,245,245)

The “ottapp” was mentioned in the “Schemes” in the adb dump of the MEO app

Hey,

I have figured out the deeplinks to open the molotov.tv app with a specific channel:

cat ./assets/live-channel-fetch-premium-user.json | jq -r '.channels[] | "\(.label),\(.deeplink)"'

TF1,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=46&video_type=channel
France 2,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=19&video_type=channel
France 3,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=49&video_type=channel
France 5,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=42&video_type=channel
M6,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=45&video_type=channel
Arte,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=34&video_type=channel
C8,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=62&video_type=channel
W9,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=51&video_type=channel
TMC,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=36&video_type=channel
TFX,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=40&video_type=channel
NRJ 12,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=26&video_type=channel
LCP 100%,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=133&video_type=channel
France 4,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=18&video_type=channel
BFMTV,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=35&video_type=channel
CNEWS,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=2&video_type=channel
CSTAR,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=38&video_type=channel
Gulli,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=58&video_type=channel
TF1 Séries Films,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=67&video_type=channel
L'Equipe,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=56&video_type=channel
6ter,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=44&video_type=channel
RMC Story,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=48&video_type=channel
RMC Découverte,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=12&video_type=channel
Chérie 25,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=9&video_type=channel
LCI - La Chaîne Info,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=5&video_type=channel
franceinfo:,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=136&video_type=channel
MANGO Cinéma,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=421&video_type=channel
MANGO Séries,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=422&video_type=channel
MANGO Docs,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=423&video_type=channel
MANGO Histoire,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=648&video_type=channel
MANGO Kids,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=424&video_type=channel
MANGO Novelas,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=675&video_type=channel
Kabillion,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=321&video_type=channel
Wild Side TV,molotov://deeplink?id=play&source=amazon-livetv&type=action&video_id=566&video_type=channel

I unzipped the APK and grepped deeplink, and found ./assets/live-channel-fetch-premium-user.json with the above examples.

1 Like

Another Norwegian one, on my Android TV, for Strim:

activity: no.rikstv.atv://app/cover_page

1 Like

It looks like there is an difference on the intent filters that works perfectly on mobile vs Google TV.

As KPN iTV is just kpnitv:// on mobile it runs as expected. And analyzing the app activities states deeplink urls. So that is it.

For F1TV the same. If you run on mobile https://f1tv.formula1.com/details the app starts. Same behavior as KPN app.

Maybe there is an different intent on the Google TV apps? Not sure if these are even different apps. As in the development process you need to have certain requirements to be egilible for TV.

Any ideas?
Going to debug further.


UPDATE 24-11-2023 14:10

When digging through the documentation of Android, came across two important requirements. Could be handy when reading manifest files;

Intent filters always need the following categories;

android.intent.category.DEFAULT
android.intent.category.BROWSABLE

If these two are not present, deeplinking/intents probably wont work.
Next to that if there are multiple intent-filters decalared, they will be combined into one. And will be crossfunctional.

e.g.

<intent-filter>
  ...
  <data android:scheme="https" android:host="www.example.com" />
  <data android:scheme="app" android:host="open.my.app" />
</intent-filter>

It might seem as though this supports only https://www.example.com and app://open.my.app. However, it actually supports those two, plus these: app://www.example.com and https://open.my.app.

Although above doesn’t resonate for me when looking at my KPN iTV example. Nevertheless…

Managed to get access to the packages via ADB on Google TV. Package for e.g. KPN on Google tv is:

com.kpn.kpnandroidtv

vs mobile

com.kpn.epg

So it appears there is indeed an difference. Digging into the INTENT.FILTERS now. To see if I can pull out manifest via adb.

UPDATE 24-11-2023 14:30

As expected, in the manifest file of the different package, the intent filter DEFAULT and BROWSABLE is missing.

<activity
    android:label="@ref/0x7f12001c"
    android:name="com.twentyfouri.tvbridge.webview.view.WebViewActivity"
    android:exported="true">

    <intent-filter>

        <action
            android:name="android.intent.action.MAIN" />

        <category
            android:name="android.intent.category.LEANBACK_LAUNCHER" />

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

Guess this is a dead end try to use intentfilters/deeplinking.

Sure i could modify the manifest and recompile, upload app again and try?
Could use adb in general for sending commands to HA when deeplinking is not supported.

It feels like such a small add-on. Not even a change. It should be mandatory :wink:

2 Likes

My Nokia android TV box isn’t turning on properly, so I want to force it to turn on. I can do that by using a deeplink to an app. It then turns on directly into the app.
But I’d like it to open into the home screen. I cannot find the deeplink for the home screen.

Does somebody have that for me? Or how can I find it?

Hello, i cannot find tivibu app.
App name com.ttnet.tivibu.
Link : https://apkpure.com/tr/tivibu-go/com.ttnet.tivibutv/download

Can i try all ways, but manifest or any file not include scheme section.
Can any friend help?
Thanks…

Do you have it for goplay too?

Quetion, do you know how to get immediately “live tv” from the vrtm go app and from vrt nu?

TiviMate Update (12.22.23): Deep linking is not supported with Tivimate. Reached out to the devs regarding this feature request. The feature request is considered by the devs. Fingers crossed as I and some others would be interested in this feature.

2 Likes