如何使用Intent在Android TV上启动amazon prime视频应用程序

问题描述 投票:-1回答:2

我正在尝试从我自己的Android TV应用程序中启动Amazon Prime for TV应用程序(https://play.google.com/store/apps/details?id=com.amazon.amazonvideo.livingroom)。不幸的是,PackageManager.getLaunchIntentForPackage()返回null。

// called inside a Fragment
val intent = activity?.packageManager?.getLaunchIntentForPackage("com.amazon.amazonvideo.livingroom")
startActivity(intent)

它在运行时抛出

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.content.Intent.migrateExtraStreamToClipData()' on a null object reference

当然,我的Android TV上安装了Amazon Prime for TV。此外,我可以使用此代码成功启动其他应用程序,如com.google.android.youtube.tvcom.netflix.ninja

关于这个话题有一个类似的问题(how launch amazon prime video app from within my android app using intent),但它并没有解决我的问题 - 解决OP的问题是使用PackageManager(我已经在使用)和com.amazon.avod.thirdpartyclient,因为该应用程序是在手机/平板电脑上运行而不是电视

编辑:Intent.migrateExtraStreamToClipData() on a null object reference没有解决我的问题。我在我的Android TV 11.5.09版本上安装了Google Play服务,而导致其他问题问题的错误(据称)已在9.4.0中修复。无论如何,接受的解决方案只是避免应用程序崩溃,而不是解决真正的问题。

android android-intent kotlin android-tv
2个回答
0
投票

您可以通过以下方式打开意图,它应该工作,因为它对我有用

Intent i=new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
            Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i.setComponent(name);
startActivity(i);`

0
投票

正如在getLaunchIntentForPackage is null for some apps中所解释的,问题的根本原因是Android TV应用程序使用Intent.CATEGORY_LEANBACK_LAUNCHER而不是Intent.CATEGORY_LAUNCHER,这会导致getLaunchIntentForPackage()返回null。但是,有些电视应用确实支持Intent.CATEGORY_LAUNCHER,这就是为什么问题并不适用于每个应用。

我决定使用评论中提到的解决方案(而不是接受的解决方案),因为它更简单,需要更少的代码:

val packageName  = "com.amazon.amazonvideo.livingroom"
val pm = activity?.packageManager
val intent = pm?.getLaunchIntentForPackage(packageName) ?: pm?.getLeanbackLaunchIntentForPackage(packageName)
startActivity(intent)

注意getLeanbackLaunchIntentForPackage()用作后备机制。这样,活动将在Android TV和手机/平板电脑上正常启动(请注意,手机/桌面和电视通常有相同服务的单独应用,如com.amazon.avod.thirdpartyclientcom.amazon.amazonvideo.livingroom

© www.soinside.com 2019 - 2024. All rights reserved.