안드로이드 웹뷰 새창 띄우기 어떻게 하나요?
본문
package live.t;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class Live extends Activity{
private WebView mWebView;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage)
return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setLayout();
// 웹뷰에서 자바스크립트실행가능
mWebView.getSettings().setJavaScriptEnabled(true);
// 플러그인
mWebView.getSettings().setPluginState(PluginState. ON);
mWebView.setWebChromeClient(new WebChromeClient()
{
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
Live.this.startActivityForResult(
Intent.createChooser(i, "사진을 선택하세요"),
FILECHOOSER_RESULTCODE);
}
});
// 구글홈페이지 지정
mWebView.loadUrl("http://domain.com/m/wow.php");
// WebViewClient 지정
mWebView.setWebViewClient(new WebViewClientClass());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
/*
* Layout
*/
private void setLayout(){
mWebView = (WebView) findViewById(R.id.webview);
}
}
위에건 웹뷰 소스구요..
private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (Uri.parse(url).getHost().equals("www.example.com")) { // This is my web site, so do not override; let my WebView load the page return false; } // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; }}
위에건 찾은 웹뷰 새창 띄우는건데요..
소스를 찾긴 했는데 아무리 해도 안되서요 ㅠㅠ
안드로이드 웹뷰 안에다 iframe을 넣으려고 하는데 iframe이 들어간 페이지는 튕기더라구요..
그렇다면 링크를 걸어서 새창으로 크롬이라던가 기본 브라우저로 띄우고 싶은데 어떻게 하나요? 도움좀 부탁드립니다..
ㅠㅠㅠ
답변 2
해당 소스를 새로 저장하여 메인 페이지 java파일안에 임포트 시켜주셔요
웹뷰 안에서 iframe을 쓰시려고 한다면, iframe을 쓸 수 있게끔 웹뷰에 소스단을 더 작성을 해주셔야겠네요.
답변을 작성하시기 전에 로그인 해주세요.