안드로이드 개발 정보
(글 수 568)
먼저 플러그인을 Enable시키면 유튜브를 포함한 플러그인들이 정상 동작합니다.
mWebView.getSettings().setPluginsEnabled(true);다만 WebViewClient 에서 shouldOverrideUrlLoading을 오버라이드하게 되면 정상적으로 YouTube플러그인이 동작하지 않는 경우가 있습니다.
The Web page at file:///android_asset/webkit/ could not be loaded as: 라는 에러가 뜹니다.
shouldOverrideUrlLoading 에서 대부분의 경우 http만 처리하시면 될테니 http에서만 작업을 처리하고 나머지 작업은 기본적으로 작동하게 되어있는 방식 그대로 동작하게 만들어주면 플러그인이 제대로 동작합니다
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String overrideUrl) {
if(overrideUrl.startsWith("http://")) {
doSomething
return true;
} else {
boolean override = false;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(overrideUrl));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName());
try {
startActivity(intent);
override = true;
} catch (ActivityNotFoundException ex) {
}
return override;
}
}
);
2010.01.16 23:57:09
머 그냥 이것 저것 하는거죠. 이것에 대해서 구글 그룹에 질문을 한 개발자는 있었는데 답변을 해놓은 개발자가 없어서 정리해놓습니다. 펍커뮤니티 회원들만 더 잘 볼수 있도록~
2012.06.15 08:19:18
Android 2.2 사용하고 있습니다.
위의 내용을 참고하여 만들어 봤는데요,
여전히 웹뷰에서 youtube 동영상이 안보이네요.???
뭐가 문제 일까요?
import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.Browser; import android.util.Log; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.TextView; import android.widget.Toast;
public class WebViewTestActivity extends Activity { private static final String MyProgressDialog = null; /** Called when the activity is first created. */ WebView mWebView; protected Context activity; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // TODO Auto-generated method stub setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webView); // 웹뷰 생성 mWebView.getSettings().setPluginsEnabled(true); // 플러그인 추가... mWebView.getSettings().setJavaScriptEnabled(true); // 자바 스크립트 enable String userAgent = mWebView.getSettings().getUserAgentString(); userAgent = userAgent.replace("Android 2.2", "Android 2.1"); try { mWebView.loadUrl("http://youtube.com"); }catch (Exception e){ e.printStackTrace(); } mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String overrideUrl) { if(overrideUrl.startsWith("http://")) { view.loadUrl("overrideUrl); return true; } else { boolean override = false; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(overrideUrl)); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName()); try { startActivity(intent); override = true; } catch (ActivityNotFoundException ex) { } return override; } } }); } }