java - 将目标 sdk 升级到 30 时初始化 youtube 播放器时出错

标签 java android youtube youtube-api

我已经实现了 Youtube API,一切都很好

但是当我升级时

compileSdkVersion 29
compileSdkVersion 30targetSdkVersion 29targetSdkVersion 30

它给了我 初始化 youtube 播放器时出错

我试图从 https://console.developers.google.com/ 更改我的 API key 但这没有意义 当我再次将 compileSdkVersion 和 targetSdkVersion 设置为 29 时,一切顺利

这是我的视频播放器页面代码:

package silver.yellow.yellowpamphletonline;
import android.os.Bundle;
import android.widget.Button;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;

public class VideoPlayer extends YouTubeBaseActivity {
    YouTubePlayerView videoPlayer;
    Button playButton;
    YouTubePlayer.OnInitializedListener onInitializedListener;
    boolean playing;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_player);
        videoPlayer = findViewById(R.id.videoPlayer);
        playButton = findViewById(R.id.play);
        playing = false;
        onInitializedListener = new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                playButton.setOnClickListener(v->{
                    if(playing){
                        youTubePlayer.pause();
                        playing = false;
                        playButton.setText("Play");
                    }
                    else {
                        youTubePlayer.play();
                        playing = true;
                        playButton.setText("Pause");
                    }

                });
                
                youTubePlayer.loadVideo("pr4OEPhwM3c");
                playing = true;
                playButton.setText("Pause");
                youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS);
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

            }
        };
        videoPlayer.initialize(VideoPlayerConfig.API_KEY,onInitializedListener);
    }
}

最佳答案

Android Target SDK 版本 30 的问题是操作系统限制了对其他应用程序的访问。 https://developer.android.com/training/basics/intents/package-visibility

将以下内容添加到 AndroidManifest 中的 list 标记以修复 YouTube 问题:

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

以下是来自的答案: https://stackoverflow.com/a/65070537/14747641

感谢@Zahra Jamshidi

关于java - 将目标 sdk 升级到 30 时初始化 youtube 播放器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63325493/

相关文章:

java - Android BluetoothSocket::connect() 抛出异常

android - 服务在 galaxy nexus 上崩溃,但在模拟器上没有

javascript - jQuery - .attr 不是函数

java - 如何将按键绑定(bind)添加到已有的事件?

java - ContainerRequestFilter 在 JAX-RS 服务方法中导致 NPE

java - 如何使用鼠标监听器和计时器计算点击次数

youtube - 在使用 YouTube Live Streaming API 时使用基本摄取或避免重复的自定义摄取

java - 有效数字字符串的 NumberFormatException

android - 是否可以使用没有阴影的 OverlayItem.setMarker()?

android - 在HTML5移动应用上播放全屏视频,出现黑屏并崩溃的应用