안드로이드 웹뷰 새창 띄우기 어떻게 하나요? 채택완료
스카이라인
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개
답변을 작성하려면 로그인이 필요합니다.
로그인