안녕하세요. 팀드모네입니다.
오늘은 웹뷰, 웹앱에서 confirm, tel 등이 되도록 만드는 방법에 대해서 공유드리겠습니다.
1. 권한 체크
AndroidManifest.xml에 CALL_PHONE 권한이 있는지 체크
<uses-permission android:name="android.permission.CALL_PHONE"/>
2. shouldOverrideUrlLoading을 기술했는지 체크
mWebView.loadUrl("https://xn--vf4b17jsctv.com/index.html?isApp=true"); // 웹뷰에 표시할 웹사이트 주소, 웹뷰 시작
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("kakaolink:") || url.startsWith("market:")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}if (url.startsWith("tel:") || url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
//전화거는 화면까지만 이동 시킬꺼면 Intent.ACTION_DIAL
//전화를 바로 걸라면 Intent.ACTION_CALL
startActivity(intent);
}else {
view.loadUrl(url);
}
return true;
}
});
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(view.getContext())
.setTitle("title")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
})
.setCancelable(false)
.create()
.show();
return true;
}
});
3. 결과 확인
결과를 확인합니다. 저는 이런식으로 나오네요.
이 포스팅은 페이스북의 audience-network를 기준으로 작성되었습니다.
Facebook 광고 좀 띄우겠다고 페북공식 github에서 코드받아왔다가 당황했네요 ㅠㅠ
URL : https://github.com/fbsamples/audience-network
블로그 방문해주셔서 감사합니다.
잘 해결되었기를 기원합니다. 추가로 질문사항이 있으면 댓글 남겨주세요 :)