안드로이드 개발 정보
(글 수 1,069)
먼저 플러그인을 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;
}
}
});
}
}



