PHP

안드로이드 YOUTUBE API 종료에 따른 WEBVIEW 대처 방법

미스털이 사용자 2023. 7. 25. 09:35
반응형

 

youtube android api서비스가 2023년 3월 1일 부터 종료여서 iframe으로 전환해야한다.

 

이런 당황스런 공지를 접하고 내 모든 어플을 싹다 바꿔야만 했다.

 

1) framelayout

다음을 바꿔야한다.

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="3dp"
            android:id="@+id/frame_youtube"
            >
            <WebView
                android:id="@+id/web_youtube"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clickable="true"
                android:focusable="true"
                android:focusableInTouchMode="true"
                />            
        </FrameLayout>
 

 

2) 프로그램 부분

            youtubesupportfragment = YouTubePlayerSupportFragment.newInstance();
            FragmentTransaction fragmentTransaction = fm.beginTransaction();
            fragmentTransaction.replace(R.id.frame_youtube, youtubesupportfragment);
            fragmentTransaction.commit();
            String finalYoutubeStr = youtubeStr;
            youtube_listener = new YouTubePlayer.OnInitializedListener() {
                @Override
                public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                    youTubePlayer.loadVideo(finalYoutubeStr);
                }

                @Override
                public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
                    Log.d("YOUTUBE_FAILURE", youTubeInitializationResult.toString());
                }
            };
            youtubesupportfragment.initialize(String.valueOf(R.string.youtube_code), youtube_listener);
 

위의 Youtbue API 사용했던 부분을 싹다 없애고 다음과 같이 바꿔줘야 한다.

 

my_web_youtube = (WebView) mainAct.findViewById(R.id.web_youtube);
            my_web_youtube.getSettings().setJavaScriptEnabled(true);
            my_web_youtube.setWebChromeClient(new WebChromeClient(){
                View fullscreen = null;

                @Override
                public void onHideCustomView()
                {
                    fullscreen.setVisibility(View.GONE);
                    my_web_youtube.setVisibility(View.VISIBLE);
                }
                @Override
                public void onShowCustomView(View view, CustomViewCallback callback)
                {
                    my_web_youtube.setVisibility(View.GONE);

                    if(fullscreen != null)
                    {
                        ((FrameLayout)mainAct.getWindow().getDecorView()).removeView(fullscreen);
                    }

                    fullscreen = view;
                    ((FrameLayout)mainAct.getWindow().getDecorView()).addView(fullscreen, new FrameLayout.LayoutParams(-1, -1));
                    fullscreen.setVisibility(View.VISIBLE);
                }
            });
            my_web_youtube.setWebViewClient(new WebViewClient());

            if(my_web_youtube != null) {
                my_web_youtube.loadUrl("IFRAME을 사용할 웹페이지"+youtubeStr);
            }
 
 

 

 

반응형