package com.example.allmap;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
import java.net.URISyntaxException;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private String url = "http://m.dyercoffee.cafe24.com/product/list_thumb.html?cate_no=47";
private WebSettings mWebSettings; //웹뷰세팅
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
if(intent != null) {//푸시알림을 선택해서 실행한것이 아닌경우 예외처리
String notificationData = intent.getStringExtra("test");
if(notificationData != null)
Log.d("FCM_TEST", notificationData);
}
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClientClass());
//세부 세팅 등록
mWebSettings = webView.getSettings();
mWebSettings.setSupportMultipleWindows(false); // 새창 띄우기 허용 여부
mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true); // 자바스크립트 새창 띄우기(멀티뷰) 허용 여부
mWebSettings.setLoadWithOverviewMode(true); // 메타태그 허용 여부
mWebSettings.setUseWideViewPort(true); // 화면 사이즈 맞추기 허용 여부
mWebSettings.setSupportZoom(true); // 화면 줌 허용 여부
mWebSettings.setBuiltInZoomControls(true); // 화면 확대 축소 허용 여부
mWebSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); // 콘텐츠 사이즈 맞추기
mWebSettings.setCacheMode(WebSettings.LOAD_DEFAULT); // 브라우저 캐시 허용 여부
mWebSettings.setDomStorageEnabled(true); // 로컬 저장소 허용 여부
}
private class WebViewClientClass extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if (url != null && url.startsWith("intent://")) {
try {
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
Intent existPackage = getPackageManager().getLaunchIntentForPackage(intent.getPackage());
if (existPackage != null) {
startActivity(intent);
} else {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("https://details?id=" + intent.getPackage()));
startActivity(marketIntent);
}
return true;
} catch (Exception e) {
e.printStackTrace();
}
} else if (url != null && url.startsWith("https://")) {
try {
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
if (intent != null) {
startActivity(intent);
}
return true;
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
if(url.startsWith("tel:"))
{
Intent call_phone = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(call_phone);
return true;
}
else if(url.startsWith("http://www"))
{
Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browser);
return true;
}
else
{
view.loadUrl(url);
}
return false;
}
}
//푸쉬알람
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
'Android' 카테고리의 다른 글
| 웹뷰에서 인터넷/전화허용/ (0) | 2021.06.01 |
|---|---|
| 파이어베이스로 푸쉬알림 보내기 (0) | 2021.06.01 |
| 안드로이드 스튜디오 웹뷰 메인 엑티비티 (0) | 2021.06.01 |
| 안드로이드 스튜디오 웹뷰 XML 코드 (0) | 2021.06.01 |
| vscode git 깃허브 연동 (0) | 2021.04.28 |