테스트 사이트 - 개발 중인 베타 버전입니다

안드로이드 웹뷰 새창 띄우기 어떻게 하나요? 채택완료

스카이라인 11년 전 조회 22,191
</div>
<div>
<div>package live.t;</div>
<div>
</div>
<div>import android.annotation.SuppressLint;</div>
<div>import android.app.Activity;</div>
<div>import android.content.Intent;</div>
<div>import android.net.Uri;</div>
<div>import android.os.Bundle;</div>
<div>import android.view.KeyEvent;</div>
<div>import android.webkit.ValueCallback;</div>
<div>import android.webkit.WebChromeClient;</div>
<div>import android.webkit.WebSettings.PluginState;</div>
<div>import android.webkit.WebView;</div>
<div>import android.webkit.WebViewClient;</div>
<div>public class Live extends Activity{</div>
<div>private WebView mWebView;</div>
<div>
</div>
<div>private ValueCallback<Uri> mUploadMessage;</div>
<div>private final static int FILECHOOSER_RESULTCODE = 1;</div>
<div>@Override</div>
<div>protected  void onActivityResult(int requestCode, int resultCode,</div>
<div>Intent intent) {</div>
<div>if (requestCode == FILECHOOSER_RESULTCODE) {</div>
<div>if (null == mUploadMessage)</div>
<div>return;</div>
<div>Uri result = intent == null || resultCode != RESULT_OK ? null</div>
<div>: intent.getData();</div>
<div>mUploadMessage.onReceiveValue(result);</div>
<div>mUploadMessage = null;</div>
<div>}</div>
<div>}</div>
<div>
</div>
<div>@SuppressLint("SetJavaScriptEnabled")</div>
<div>@Override</div>
<div>protected void onCreate(Bundle savedInstanceState) {</div>
<div>super.onCreate(savedInstanceState);</div>
<div>setContentView(R.layout.main);</div>
<div>setLayout();</div>
<div>// 웹뷰에서 자바스크립트실행가능</div>
<div>mWebView.getSettings().setJavaScriptEnabled(true);</div>
<div>// 플러그인</div>
<div>mWebView.getSettings().setPluginState(PluginState. ON);</div>
<div>
</div>
<div>mWebView.setWebChromeClient(new WebChromeClient()</div>
<div>{</div>
<div>       @SuppressWarnings("unused")</div>
<div>       public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {</div>
<div>           mUploadMessage = uploadMsg;</div>
<div>           Intent i = new Intent(Intent.ACTION_GET_CONTENT);</div>
<div>           i.addCategory(Intent.CATEGORY_OPENABLE);</div>
<div>           i.setType("*/*");</div>
<div>           Live.this.startActivityForResult(</div>
<div>                   Intent.createChooser(i, "사진을 선택하세요"),</div>
<div>                   FILECHOOSER_RESULTCODE);</div>
<div>       }</div>
<div> });</div>
<div>
</div>
<div>// 구글홈페이지 지정</div>
<div>mWebView.loadUrl("<a href="http://domain.com/m/wow.php" target="_blank" rel="noopener noreferrer">http://domain.com/m/wow.php</a>");</div>
<div>// WebViewClient 지정</div>
<div>mWebView.setWebViewClient(new WebViewClientClass());</div>
<div>}</div>
<div>@Override</div>
<div>public boolean onKeyDown(int keyCode, KeyEvent event) {</div>
<div>if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {</div>
<div>mWebView.goBack();</div>
<div>return true;</div>
<div>}</div>
<div>return super.onKeyDown(keyCode, event);</div>
<div>}</div>
<div>private class WebViewClientClass extends WebViewClient {</div>
<div>@Override</div>
<div>public boolean shouldOverrideUrlLoading(WebView view, String url) {</div>
<div>view.loadUrl(url);</div>
<div>return true;</div>
<div>}</div>
<div>}</div>
<div>/*</div>
<div>* Layout</div>
<div>*/</div>
<div>private void setLayout(){</div>
<div>mWebView = (WebView) findViewById(R.id.webview);</div>
<div>}</div>
<div>}</div></div>
<div>
위에건 웹뷰 소스구요..
</div>
<div>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;    }}</div>
<div>
위에건 찾은 웹뷰 새창 띄우는건데요..
소스를 찾긴 했는데 아무리 해도 안되서요 ㅠㅠ 
안드로이드 웹뷰 안에다 iframe을 넣으려고 하는데 iframe이 들어간 페이지는 튕기더라구요..
그렇다면 링크를 걸어서 새창으로 크롬이라던가 기본 브라우저로 띄우고 싶은데 어떻게 하나요? 도움좀 부탁드립니다..
ㅠㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
해당 소스를 새로 저장하여 메인 페이지 java파일안에 임포트 시켜주셔요
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

웹뷰 안에서 iframe을 쓰시려고 한다면, iframe을 쓸 수 있게끔 웹뷰에 소스단을 더 작성을 해주셔야겠네요.
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인