안드로이드 웹뷰?쪽도 아시는분 채택완료
안녕하세요 질문좀 드리고자합니다.
이번에 웹뷰로 하나 어플을 만들었는데요
이미지
이런식으로 웹에서는 작업을했는데요
그냥 인터넷에서는 잘되는데 웹뷰에서는
다음 이유로 tel:010-1111-5570의 웹페이지를 로드할 수 없습니다
라고나옵니다 ㅠㅠ
구글링 해도 방법을 잘모르겟고
아래링크 설명좀 해주시면 감사하곗습니다
http://frog-rammer.blogspot.kr/2014/07/web-view.html">http://frog-rammer.blogspot.kr/2014/07/web-view.html
다 넣었는데 안됩니다 ㅠㅠ
AndroidManifest.xml 부분
</span></p><pre style="background-color: rgb(255, 255, 255); font-family: 굴림체; font-size: 9.6pt;"><span style="font-style:italic;"><?</span><span style="color:#0000ff;font-weight:bold;">xml version=</span><span style="color:#008000;font-weight:bold;">"1.0" </span><span style="color:#0000ff;font-weight:bold;">encoding=</span><span style="color:#008000;font-weight:bold;">"utf-8"</span><span style="font-style:italic;">?>
</span><<span style="color:#000080;font-weight:bold;">manifest </span><span style="color:#0000ff;font-weight:bold;">xmlns:</span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">=</span><span style="color:#008000;font-weight:bold;">"<a href="http://schemas.android.com/apk/res/android" target="_blank" rel="noopener noreferrer">http://schemas.android.com/apk/res/android</a>"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#0000ff;font-weight:bold;">package=</span><span style="color:#008000;font-weight:bold;">"com.mobile3cm.alex.webview"</span>>
<<span style="color:#000080;font-weight:bold;">uses-permission </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">"android.permission.INTERNET" </span>/>
<<span style="color:#000080;font-weight:bold;">uses-permission </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">"android.permission.READ_EXTERNAL_STORAGE" </span>/>
<<span style="color:#000080;font-weight:bold;">uses-permission </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">"android.permission.CALL_PHONE"</span>/>
<<span style="color:#000080;font-weight:bold;">application
</span><span style="color:#000080;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:allowBackup=</span><span style="color:#008000;font-weight:bold;">"true"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:icon=</span><span style="color:#008000;font-weight:bold;">"@drawable/icon_gsshop_mobile"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:label=</span><span style="color:#008000;font-weight:bold;">"@string/app_name"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:supportsRtl=</span><span style="color:#008000;font-weight:bold;">"true"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:theme=</span><span style="color:#008000;font-weight:bold;">"@style/AppTheme"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:hardwareAccelerated=</span><span style="color:#008000;font-weight:bold;">"true"</span>>
<<span style="color:#000080;font-weight:bold;">activity </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">".MainActivity"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:screenOrientation=</span><span style="color:#008000;font-weight:bold;">"portrait"</span>>
<<span style="color:#000080;font-weight:bold;">intent-filter</span>>
<<span style="color:#000080;font-weight:bold;">action </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">"android.intent.action.MAIN" </span>/>
<<span style="color:#000080;font-weight:bold;">category </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">"android.intent.category.LAUNCHER" </span>/>
</<span style="color:#000080;font-weight:bold;">intent-filter</span>>
</<span style="color:#000080;font-weight:bold;">activity</span>>
<<span style="color:#000080;font-weight:bold;">activity </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:name=</span><span style="color:#008000;font-weight:bold;">".SplashActivity"
</span><span style="color:#008000;font-weight:bold;"> </span><span style="color:#660e7a;font-weight:bold;">android</span><span style="color:#0000ff;font-weight:bold;">:screenOrientation=</span><span style="color:#008000;font-weight:bold;">"portrait"
</span><span style="color:#008000;font-weight:bold;"> </span>/>
</<span style="color:#000080;font-weight:bold;">application</span>>
</<span style="color:#000080;font-weight:bold;">manifest</span>>
</pre><p><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);">
MainActivity.java 부분
</p><pre style="background-color: rgb(255, 255, 255); font-family: 굴림체; font-size: 9.6pt;"><span style="color:#000080;font-weight:bold;">package </span>com.mobile3cm.alex.webview;
<span style="color:#000080;font-weight:bold;">import </span>android.app.Activity;
<span style="color:#000080;font-weight:bold;">import </span>android.app.ProgressDialog;
<span style="color:#000080;font-weight:bold;">import </span>android.content.Intent;
<span style="color:#000080;font-weight:bold;">import </span>android.net.Uri;
<span style="color:#000080;font-weight:bold;">import </span>android.os.Build;
<span style="color:#000080;font-weight:bold;">import </span>android.os.Message;
<span style="color:#000080;font-weight:bold;">import </span>android.support.v7.app.AppCompatActivity;
<span style="color:#000080;font-weight:bold;">import </span>android.os.Bundle;
<span style="color:#000080;font-weight:bold;">import </span>android.util.Log;
<span style="color:#000080;font-weight:bold;">import </span>android.view.KeyEvent;
<span style="color:#000080;font-weight:bold;">import </span><span style="color:#808000;">android.webkit.JavascriptInterface</span>;
<span style="color:#000080;font-weight:bold;">import </span>android.webkit.ValueCallback;
<span style="color:#000080;font-weight:bold;">import </span>android.webkit.WebChromeClient;
<span style="color:#000080;font-weight:bold;">import </span>android.webkit.WebSettings;
<span style="color:#000080;font-weight:bold;">import </span>android.webkit.WebView;
<span style="color:#000080;font-weight:bold;">import </span>android.webkit.WebViewClient;
<span style="color:#000080;font-weight:bold;">import </span>android.widget.Toast;
<span style="color:#000080;font-weight:bold;">import </span>java.net.URL;
<span style="color:#000080;font-weight:bold;">public class </span>MainActivity <span style="color:#000080;font-weight:bold;">extends </span>Activity {
WebView <span style="color:#660e7a;font-weight:bold;">webView</span>;
URL <span style="color:#660e7a;font-weight:bold;">uri</span>;
<span style="color:#000080;font-weight:bold;">private </span>ValueCallback<Uri> <span style="color:#660e7a;font-weight:bold;">filePathCallbackNormal</span>;
<span style="color:#000080;font-weight:bold;">private </span>ValueCallback<Uri[]> <span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop</span>;
<span style="color:#000080;font-weight:bold;">private final static int </span><span style="color:#660e7a;font-weight:bold;font-style:italic;">FILECHOOSER_NORMAL_REQ_CODE </span>= <span style="color:#0000ff;">1</span>;
<span style="color:#000080;font-weight:bold;">private final static int </span><span style="color:#660e7a;font-weight:bold;font-style:italic;">FILECHOOSER_LOLLIPOP_REQ_CODE </span>= <span style="color:#0000ff;">2</span>;
<span style="color:#808000;">@Override
</span><span style="color:#808000;"> </span><span style="color:#000080;font-weight:bold;">protected void </span>onCreate(Bundle savedInstanceState) {
<span style="color:#000080;font-weight:bold;">super</span>.onCreate(savedInstanceState);
setContentView(R.layout.<span style="color:#660e7a;font-weight:bold;font-style:italic;">activity_main</span>);
startActivity(<span style="color:#000080;font-weight:bold;">new </span>Intent(MainActivity.<span style="color:#000080;font-weight:bold;">this</span>, SplashActivity.<span style="color:#000080;font-weight:bold;">class</span>));
<span style="color:#660e7a;font-weight:bold;">webView </span>= (WebView) findViewById(R.id.<span style="color:#660e7a;font-weight:bold;font-style:italic;">wv_mainWebview</span>);
String url = <span style="color:#008000;font-weight:bold;">"<a href="http://jmoney119.cafe24.com" target="_blank" rel="noopener noreferrer">http://jmoney119.cafe24.com</a>"</span>;
<span style="color:#000080;font-weight:bold;">try </span>{
<span style="color:#660e7a;font-weight:bold;">uri </span>= <span style="color:#000080;font-weight:bold;">new </span>URL(url);
<span style="color:#660e7a;font-weight:bold;">webView</span>.setWebChromeClient(<span style="color:#000080;font-weight:bold;">new </span>WebChromeClient() {
<span style="color:#808080;font-style:italic;">// For Android < 3.0
</span><span style="color:#808080;font-style:italic;"> </span><span style="color:#000080;font-weight:bold;">public void </span>openFileChooser(ValueCallback<Uri> uploadMsg) {
Log.<span style="font-style:italic;">d</span>(<span style="color:#008000;font-weight:bold;">"MainActivity"</span>, <span style="color:#008000;font-weight:bold;">"3.0 <"</span>);
openFileChooser(uploadMsg, <span style="color:#008000;font-weight:bold;">""</span>);
}
<span style="color:#808080;font-style:italic;">// For Android 3.0+
</span><span style="color:#808080;font-style:italic;"> </span><span style="color:#000080;font-weight:bold;">public void </span>openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
Log.<span style="font-style:italic;">d</span>(<span style="color:#008000;font-weight:bold;">"MainActivity"</span>, <span style="color:#008000;font-weight:bold;">"3.0+"</span>);
<span style="color:#660e7a;font-weight:bold;">filePathCallbackNormal </span>= uploadMsg;
Intent i = <span style="color:#000080;font-weight:bold;">new </span>Intent(Intent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">ACTION_GET_CONTENT</span>);
i.addCategory(Intent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">CATEGORY_OPENABLE</span>);
i.setType(<span style="color:#008000;font-weight:bold;">"image/*"</span>);
startActivityForResult(Intent.<span style="font-style:italic;">createChooser</span>(i, <span style="color:#008000;font-weight:bold;">"File Chooser"</span>), <span style="color:#660e7a;font-weight:bold;font-style:italic;">FILECHOOSER_NORMAL_REQ_CODE</span>);
}
<span style="color:#808080;font-style:italic;">// For Android 4.1+
</span><span style="color:#808080;font-style:italic;"> </span><span style="color:#000080;font-weight:bold;">public void </span>openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
Log.<span style="font-style:italic;">d</span>(<span style="color:#008000;font-weight:bold;">"MainActivity"</span>, <span style="color:#008000;font-weight:bold;">"4.1+"</span>);
openFileChooser(uploadMsg, acceptType);
}
<span style="color:#808080;font-style:italic;">// For Android 5.0+
</span><span style="color:#808080;font-style:italic;"> </span><span style="color:#000080;font-weight:bold;">public boolean </span>onShowFileChooser(
WebView webView, ValueCallback<Uri[]> filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams) {
Log.<span style="font-style:italic;">d</span>(<span style="color:#008000;font-weight:bold;">"MainActivity"</span>, <span style="color:#008000;font-weight:bold;">"5.0+"</span>);
<span style="color:#000080;font-weight:bold;">if </span>(<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop </span>!= <span style="color:#000080;font-weight:bold;">null</span>) {
<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop</span>.onReceiveValue(<span style="color:#000080;font-weight:bold;">null</span>);
<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop </span>= <span style="color:#000080;font-weight:bold;">null</span>;
}
<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop </span>= filePathCallback;
Intent i = <span style="color:#000080;font-weight:bold;">new </span>Intent(Intent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">ACTION_GET_CONTENT</span>);
i.addCategory(Intent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">CATEGORY_OPENABLE</span>);
i.setType(<span style="color:#008000;font-weight:bold;">"image/*"</span>);
startActivityForResult(Intent.<span style="font-style:italic;">createChooser</span>(i, <span style="color:#008000;font-weight:bold;">"File Chooser"</span>), <span style="color:#660e7a;font-weight:bold;font-style:italic;">FILECHOOSER_LOLLIPOP_REQ_CODE</span>);
<span style="color:#000080;font-weight:bold;">return true</span>;
}
<span style="color:#808000;">@Override
</span><span style="color:#808000;"> </span><span style="color:#000080;font-weight:bold;">public boolean </span>onCreateWindow(WebView view, <span style="color:#000080;font-weight:bold;">boolean </span>dialog, <span style="color:#000080;font-weight:bold;">boolean </span>userGesture, Message resultMsg) {
<span style="color:#808080;font-style:italic;">// return true or false after performing the URL request
</span><span style="color:#808080;font-style:italic;"> </span>WebView newWebView = <span style="color:#000080;font-weight:bold;">new </span>WebView(MainActivity.<span style="color:#000080;font-weight:bold;">this</span>);
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.<span style="color:#660e7a;font-weight:bold;">obj</span>;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(<span style="color:#000080;font-weight:bold;">new </span>WebViewClient() {
<span style="color:#808000;">@Override
</span><span style="color:#808000;"> </span><span style="color:#000080;font-weight:bold;">public boolean </span>shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = <span style="color:#000080;font-weight:bold;">new </span>Intent(Intent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">ACTION_VIEW</span>);
browserIntent.setData(Uri.<span style="font-style:italic;">parse</span>(url));
startActivity(browserIntent);
<span style="color:#000080;font-weight:bold;">return true</span>;
}
});
<span style="color:#000080;font-weight:bold;">return true</span>;
}
});
<span style="color:#660e7a;font-weight:bold;">webView</span>.setWebViewClient(<span style="color:#000080;font-weight:bold;">new </span>WebViewClient() {
<span style="color:#808000;">@Override
</span><span style="color:#808000;"> </span><span style="color:#000080;font-weight:bold;">public boolean </span>shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
<span style="color:#000080;font-weight:bold;">return false</span>;
}
});
WebSettings webSettings = <span style="color:#660e7a;font-weight:bold;">webView</span>.getSettings();
webSettings.setJavaScriptEnabled(<span style="color:#000080;font-weight:bold;">true</span>);
<span style="color:#660e7a;font-weight:bold;">webView</span>.loadUrl(url);
}<span style="color:#000080;font-weight:bold;">catch </span>(Exception e){
}
}
<span style="color:#000080;font-weight:bold;">public boolean </span>shouldOverrideUrlLoading(WebView view, String url) {
<span style="color:#000080;font-weight:bold;">if</span>(url.startsWith(<span style="color:#008000;font-weight:bold;">"tel:010-1111-5570"</span>)){
Intent dial = <span style="color:#000080;font-weight:bold;">new </span>Intent(Intent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">ACTION_VIEW</span>, Uri.<span style="font-style:italic;">parse</span>(url));
<span style="color:#808080;font-style:italic;">//현재의 activity 에 대하여 startActivity 호출
</span><span style="color:#808080;font-style:italic;"> </span>startActivity(dial);
<span style="color:#000080;font-weight:bold;">return true</span>;
}
view.loadUrl(url);
<span style="color:#000080;font-weight:bold;">return true</span>;
}
<span style="color:#808000;">@Override
</span><span style="color:#808000;"> </span><span style="color:#000080;font-weight:bold;">public boolean </span>onKeyDown(<span style="color:#000080;font-weight:bold;">int </span>keyCode, KeyEvent event) {
<span style="color:#000080;font-weight:bold;">if</span>((keyCode == KeyEvent.<span style="color:#660e7a;font-weight:bold;font-style:italic;">KEYCODE_BACK</span>) && <span style="color:#660e7a;font-weight:bold;">webView</span>.canGoBack()) {
<span style="color:#660e7a;font-weight:bold;">webView</span>.goBack();
<span style="color:#000080;font-weight:bold;">return true</span>;
}
<span style="color:#000080;font-weight:bold;">return super</span>.onKeyDown(keyCode, event);
}
<span style="color:#000080;font-weight:bold;">protected void </span>onActivityResult(<span style="color:#000080;font-weight:bold;">int </span>requestCode, <span style="color:#000080;font-weight:bold;">int </span>resultCode, Intent data) {
<span style="color:#000080;font-weight:bold;">if </span>(requestCode == <span style="color:#660e7a;font-weight:bold;font-style:italic;">FILECHOOSER_NORMAL_REQ_CODE</span>) {
<span style="color:#000080;font-weight:bold;">if </span>(<span style="color:#660e7a;font-weight:bold;">filePathCallbackNormal </span>== <span style="color:#000080;font-weight:bold;">null</span>) <span style="color:#000080;font-weight:bold;">return </span>;
Uri result = (data == <span style="color:#000080;font-weight:bold;">null </span>|| resultCode != <span style="color:#660e7a;font-weight:bold;font-style:italic;">RESULT_OK</span>) ? <span style="color:#000080;font-weight:bold;">null </span>: data.getData();
<span style="color:#660e7a;font-weight:bold;">filePathCallbackNormal</span>.onReceiveValue(result);
<span style="color:#660e7a;font-weight:bold;">filePathCallbackNormal </span>= <span style="color:#000080;font-weight:bold;">null</span>;
} <span style="color:#000080;font-weight:bold;">else if </span>(requestCode == <span style="color:#660e7a;font-weight:bold;font-style:italic;">FILECHOOSER_LOLLIPOP_REQ_CODE</span>) {
<span style="color:#000080;font-weight:bold;">if </span>(<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop </span>== <span style="color:#000080;font-weight:bold;">null</span>) <span style="color:#000080;font-weight:bold;">return </span>;
<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop</span>.onReceiveValue(WebChromeClient.FileChooserParams.<span style="font-style:italic;">parseResult</span>(resultCode, data));
<span style="color:#660e7a;font-weight:bold;">filePathCallbackLollipop </span>= <span style="color:#000080;font-weight:bold;">null</span>;
}
}
}
</pre><pre style="background-color: rgb(255, 255, 255); font-family: 굴림체; font-size: 9.6pt;">
답변 1개
https://www.google.co.kr/#newwindow=1&q=%EC%9B%B9%EB%B7%B0+tel+%EC%B2%98%EB%A6%AC&spf=1496221218796">https://www.google.co.kr/#newwindow=1&q=%EC%9B%B9%EB%B7%B0+tel+%EC%B2%98%EB%A6%AC&spf=1496221218796
안드로이드 웹뷰의 경우 tel, sms 이런 기능들은 별도 처리를 해주셔야 됩니다.
검색하면 많은 소스가 나오니 맞는 소스를 선택하셔서 적용하시면 될거 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인