From ce0b19605a9fb651e333be0e99905d15f0165324 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 8 Nov 2020 20:39:47 -0600 Subject: [PATCH] Fix crash on HarmonyOS due to broken TV content provider APIs Fixes #883 --- .../java/com/limelight/utils/TvChannelHelper.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/limelight/utils/TvChannelHelper.java b/app/src/main/java/com/limelight/utils/TvChannelHelper.java index 4e18ce23..d644ba08 100644 --- a/app/src/main/java/com/limelight/utils/TvChannelHelper.java +++ b/app/src/main/java/com/limelight/utils/TvChannelHelper.java @@ -252,7 +252,19 @@ public class TvChannelHelper { @TargetApi(Build.VERSION_CODES.O) private boolean isAndroidTV() { - return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK); + PackageManager pm = context.getPackageManager(); + + // HarmonyOS devices report PackageManager.FEATURE_LEANBACK yet + // when we attempt to actually use TvContract, it will die with + // an IllegalArgumentException because TvContract.Channels.CONTENT_URI + // is an unknown URL. I don't know if this is a perfect check for + // HarmonyOS-powered TVs (excluding any Android TVs), but it will + // suffice for now. + if (pm.hasSystemFeature("com.huawei.software.features.tv")) { + return false; + } + + return pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); } @TargetApi(Build.VERSION_CODES.O)