Seeing what apps your TV has installed
· 2 min read
Your television's app menu shows what the manufacturer wants to show you. The real list is considerably longer, and that is where the interesting things live: telemetry services, advertising launchers and promoted apps you have never opened.
The full inventory
adb shell pm list packages
Returns something like this, dozens or hundreds of lines:
package:com.google.android.tvlauncher
package:com.netflix.ninja
package:com.manufacturer.acr
package:android
The useful variants
System apps only (the preinstalled ones, which is what we are after):
adb shell pm list packages -s
Only the ones you installed:
adb shell pm list packages -3
With each one's file, useful to tell whether it lives on the system partition:
adb shell pm list packages -f
Search by name, when you already suspect something:
adb shell pm list packages | grep -i netflix
On Windows, swap grep -i for findstr /i.
Save the list before touching anything
This is the most useful advice in the article:
adb shell pm list packages > tv-original.txt
That file is your starting point. If something feels off in a month and you cannot remember what you removed, comparing takes ten seconds.
How to read the names
Package names follow a reverse-domain pattern and say quite a lot:
com.google.android.*— Google components. Careful: many are essential.com.android.*— parts of Android itself. Almost none of these get touched.com.manufacturer.*— the manufacturer's own. Most of what is dispensable lives here.com.netflix.*,com.amazon.*— preinstalled third-party apps. Usually the safest to remove.
Working out what a package does
If you find one you have no idea about:
adb shell dumpsys package com.example.package | head -40
It will tell you the version, the permissions and whether it is a system app. The permissions are especially revealing: a "product improvement" service asking for microphone access is telling you what it does.
The next step
You have the inventory. What you do not have is the hard part: knowing what can go on your specific model without breaking anything. That is exactly what we are building in the directory, one model at a time.