Android YouTube API“初始化YouTube播放器时出现错误”

20

我有一个安卓应用程序,可以播放Youtube视频。我正在使用最新的YouTube API(1.2.1)。我在Android 4.0.4、4.3、4.4.4或5.0等多个设备上进行了尝试,并且完美运行(每个设备上都是YouTube应用程序版本10. -)。但在一个设备上,在那里是安卓4.0.4和YouTube应用程序版本4.4.11,它无法正常工作并显示错误“初始化YouTube播放器时发生错误”。文档中写道,YouTube应用程序的最低要求版本为4.2.16。所以我不知道问题出在哪里。

有人有什么想法,这是怎么回事或者我该如何解决?

非常感谢...


除了4.0.4版本,它还能在其他版本上运行吗?我遇到了同样的错误,现在在任何设备上都无法工作。最近它在任何设备上都能正常工作。 - Aung Pyae
YouTube应用程序更新后,它开始正常工作。然后手机被重置,YouTube应用程序的版本再次变为4.2.16,但一切都正常工作。这很奇怪。 - pojta
5个回答

52

此问题出现在 Android 11 及以上版本,原因是由于包可见性过滤

有限的应用程序可见性会影响返回有关其他应用程序信息的方法的结果,例如 queryIntentActivities()、getPackageInfo() 和 getInstalledApplications()。有限制的可见性还会影响与其他应用程序的显式交互,例如启动另一个应用程序的服务。

详细信息请参见:https://developer.android.com/training/package-visibility

将以下代码添加到 AndroidManifest.xml 文件中:

<queries>
   <intent>
      <action android:name="com.google.android.youtube.api.service.START" />
   </intent>
</queries>

3
请详细阐述您的答案。 - Gufran Hasan
对于我的应用程序,仅支持Android 11及以上版本的设备。我面临相同的问题,但在将这些代码行添加到Android清单文件后,它对我起作用了。 - Bilal Tariq
@Bilal 这应该是被接受的答案。 - Prateek Gupta
1
在manifest.xml文件的<application>标签上方添加以下代码行。 尽管我仍然不知道为什么没有这些行就不能正常工作,反之亦然。 我按照教程操作时遇到了错误,而教程作者却没有问题播放视频。 - Wahaj Mubeen
@Bilal,YouTube应用可以从三星手机中禁用...在这种情况下,会显示相同的错误信息,那么该怎么办呢? - Jithish P N
谢谢,现在它对我有用了,Youtube播放器正在工作。顺便说一下,我注意到查询标签应该在应用程序标签之上。 - Muhammad Afzal

7

将您的Android版Youtube应用更新到最新版本,它一定会正常工作!


4
我从未想过要在那个位置查找设置,正如您所说,它起作用了。
以下是针对那些不太熟悉设置的人的说明:
首先,您需要前往设置 -> 电池 -> 应用启动 -> YouTube。 现在将自动管理选项禁用。
在禁用上述选项后,将显示一个弹出窗口。
现在使Secondary Launch选项启用(可以由其他应用程序启动)。

0
如果有人仍然遇到这个错误,问题可能在布局文件中。你可能定义了固定的高度和宽度:
<com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="123dp"
    android:layout_height="123dp" />

用"wrap_content"替换高度和宽度:

<com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

对我不起作用 - Juan Camilo Camacho Beltrán

-3

我将 targetSdkVersion =30 替换为 targetSdkVersion =26,这对我起作用了。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30`enter code here`
    defaultConfig {
        applicationId "com.loopwiki.youtubeplayerexample"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation files('libs/YouTubeAndroidPlayerApi.jar')
}

1
那只是一个糟糕的建议。 - Michalsx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接