이 튜토리얼에서는 안드로이드 앱에서 WebView의 세이프 브라우징(Safe Browsing) 기능을 활성화하는 방법을 단계별로 살펴봅니다.
세이프 브라우징은 구글이 제공하는 보안 서비스로, 피싱 사이트나 멀웨어가 포함된 위험한 웹페이지에 사용자가 접근하기 전에 경고를 표시해 줍니다. WebView를 사용해 외부 웹 콘텐츠를 보여주는 앱이라면 반드시 활성화하는 것이 좋습니다.
1단계: 새 프로젝트 생성
Android Studio에서 File ⇒ New Project를 선택하고, 필요한 모든 정보를 입력하여 새 프로젝트를 생성합니다.
2단계: 레이아웃 파일 작성 (res/layout/activity_main.xml)
아래 코드를 activity_main.xml에 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:gravity = "center"
android:layout_height = "match_parent"
tools:context = ".MainActivity"
android:orientation = "vertical">
<WebView
android:id = "@+id/web_view"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
</LinearLayout>위 코드에서는 tutorialspoint.com 웹사이트를 화면에 표시하기 위한 WebView를 배치했습니다.
3단계: 메인 액티비티 작성 (src/MainActivity.java)
아래 코드를 MainActivity.java에 추가합니다. 핵심은 setSafeBrowsingEnabled(true) 호출입니다.
package com.example.myapplication;
import android.app.ProgressDialog;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading Data...");
progressDialog.setCancelable(false);
WebView web_view = findViewById(R.id.web_view);
web_view.requestFocus();
web_view.getSettings().setLightTouchEnabled(true);
web_view.getSettings().setJavaScriptEnabled(true);
web_view.getSettings().setGeolocationEnabled(true);
web_view.setSoundEffectsEnabled(true);
web_view.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
web_view.getSettings().setUseWideViewPort(true);
web_view.getSettings().setSafeBrowsingEnabled(true);
// Web Storage 활성화: localStorage, sessionStorage
web_view.getSettings().setDomStorageEnabled(true);
web_view.loadUrl("https://www.tutorialspoint.com/");
web_view.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if (progress < 100) {
progressDialog.show();
}
if (progress == 100) {
progressDialog.dismiss();
}
}
});
}
}코드를 간단히 살펴보면 다음과 같습니다.
- setJavaScriptEnabled(true): WebView에서 자바스크립트 실행을 허용합니다.
- setGeolocationEnabled(true): 위치 정보 사용을 허용합니다.
- setDomStorageEnabled(true): localStorage, sessionStorage 같은 웹 스토리지를 활성화합니다.
- setSafeBrowsingEnabled(true): 세이프 브라우징을 켜는 핵심 설정으로, API 26(Android 8.0) 이상에서 지원됩니다.
- WebChromeClient: 페이지 로딩 진행률에 따라 ProgressDialog를 표시하거나 숨깁니다.
참고로 이 예제에서는 @RequiresApi(api = Build.VERSION_CODES.P) 어노테이션이 사용되었는데, 실제 프로젝트에서는 최소 SDK 버전을 신중하게 설정하거나 런타임에서 OS 버전을 확인하는 것이 좋습니다.
4단계: 매니페스트 수정 (AndroidManifest.xml)
인터넷 권한을 추가하기 위해 아래 코드를 AndroidManifest.xml에 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android"
package = "com.example.myapplication">
<uses-permission android:name = "android.permission.INTERNET"/>
<application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:label = "@string/app_name"
android:roundIcon = "@mipmap/ic_launcher_round"
android:supportsRtl = "true"
android:theme = "@style/AppTheme">
<activity android:name = ".MainActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>외부 웹사이트를 로드하려면 android.permission.INTERNET 권한이 반드시 필요합니다. 이 권한이 없으면 WebView가 아무것도 표시하지 못합니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run 아이콘을 클릭하세요. 실행 옵션에서 모바일 기기를 선택하면, 연결된 기본 화면에 아래와 같은 결과가 표시됩니다.

마무리
지금까지 안드로이드 WebView에서 세이프 브라우징을 활성화하는 전체 과정을 살펴봤습니다. setSafeBrowsingEnabled(true) 한 줄만 추가하면 되기 때문에 구현 난이도는 매우 낮지만, 사용자를 악성 사이트로부터 보호할 수 있는 강력한 보안 장치입니다. WebView를 활용하는 앱을 개발할 때 이 설정을 기본값으로 적용하는 것을 권장합니다.