반응형
반응형
반응형
반응형

안드로이드 : 웹뷰 404 에러처리

WebView.setWebViewClient(new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}

@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);

switch (errorCode) {
case ERROR_AUTHENTICATION: // 서버에서 사용자 인증 실패
case ERROR_BAD_URL: // 잘못된 URL
case ERROR_CONNECT: // 서버로 연결 실패
case ERROR_FAILED_SSL_HANDSHAKE: // SSL handshake 수행 실패
case ERROR_FILE: // 일반 파일 오류
case ERROR_FILE_NOT_FOUND: // 파일을 찾을 수 없습니다
case ERROR_HOST_LOOKUP: // 서버 또는 프록시 호스트 이름 조회 실패
case ERROR_IO: // 서버에서 읽거나 서버로 쓰기 실패
case ERROR_PROXY_AUTHENTICATION: // 프록시에서 사용자 인증 실패
case ERROR_REDIRECT_LOOP: // 너무 많은 리디렉션
case ERROR_TIMEOUT: // 연결 시간 초과
case ERROR_TOO_MANY_REQUESTS: // 페이지 로드중 너무 많은 요청 발생
case ERROR_UNKNOWN: // 일반 오류
case ERROR_UNSUPPORTED_AUTH_SCHEME: // 지원되지 않는 인증 체계
case ERROR_UNSUPPORTED_SCHEME:
WebView.loadUrl("about:blank"); // 빈페이지 출력
AlertDialog.Builder builder = new AlertDialog.Builder(MyView.this);
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

// 확인버튼 클릭시 이벤트

}});
builder.setMessage("네트워크 상태가 원활하지 않습니다. 어플을 종료합니다.");
// builder.setMessage("네트워크 상태가 원활하지 않습니다. 페이지를 이동합니다.");
builder.setCancelable(false); // 뒤로가기 버튼 차단
builder.show(); // 다이얼로그실행
break;
}}});
반응형
반응형

하이브리드앱, 웹뷰(WebView) 설정하기 - 안드로이드

안드로이드 스튜디오 설치하고.  https://developer.android.com/studio/

AndroidManifest.xml

// 인터넷 사용할꺼야 라고 선언
<uses-permission android:name="android.permission.INTERNET" />

layout.xml 

//웹뷰 등록 html로 비교하면 iframe 과 비슷하겠네요.
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>

Java

private WebView mWebView; //웹뷰
private WebSettings mWebSettings; //웹뷰세팅

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

     // 웹뷰 세팅
     mWebView = (WebView)findViewById(R.id.webview); //레이어와 연결
     mWebView .setWebViewClient(new WebViewClient()); // 클릭시 새창 안뜨게
     mWebSettings = mWebView.getSettings(); //세부 세팅 등록
     mWebSettings.setJavaScriptEnabled(true); // 자바스크립트 사용 허용

     mWebView.loadUrl("http://m.nate.com"); //원하는 URL  입력
}

 


웹뷰 기본 옵션
mWebView.goBack(); //뒤로가기
mWebView.goForward(); //앞으로가기
mWebView.reload(); //새로고침

mWebView.clearCache(true); // 캐시 지우기
mWebView.reload(); // 현재 웹뷰 새로고침
mWebView.stopLoading(); // 로딩 중단

//스크롤 없애기
mWebView.setVerticalScrollBarEnabled(false);
mWebView.setHorizontalScrollBarEnabled(false);


웹뷰 세부 옵션

wvs = mWebView.getSettings();

wvs .setWebViewClient(new WebViewClient()); // 클릭시 새창 안뜨게
wvs .setJavaScriptEnabled(true); //자바스크립트 사용

wvs .setWebChromeClient(new webViewChrome()); // alert 경고창 사용

//화면 비율 관련 - 안드로이드 TV셋탑에서 웹뷰 사용할때 웹페이지 viewport가 적용안되서.
wvs .setUseWideViewPort(true); //wide viewport를 사용하도록 설정
wvs.setLoadWithOverviewMode(true); // 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정
wvs.setInitialScale(35); //비율 조절
wvs.setDefaultFontSize(8); // 기본 폰트 사이즈 지정
wvs.setMinimumFontSize(8); //폰트 사이즈 지정

//웹뷰 멀티 터치 가능하게 (줌기능)
wvs .getSettings().setBuiltInZoomControls(true); //줌 아이콘 사용 설정
wvs .getSettings().setSupportZoom(false);

wvs .setPluginState(WebSettings.PluginState.ON_DEMAND); // 플러그인을 사용 설정
wvs .setCacheMode(WebSettings.LOAD_NO_CACHE); // 웹뷰가 캐시를 사용하지 않도록 설정

wvs .setDefaultZoom(WebSettings.ZoomDensity.FAR); // 페이지 크기 자동 조절?

뒤로 가기 버튼
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}


webViewExampleSettings.setSaveFormData(true);  입력된 데이터 저장 여부
webViewExampleSettings.setSavePassword(true);  입력된 비밀번호 저장 여부

 

반응형
반응형

App Icon Generator

https://appicon.co/#app-icon

반응형
반응형

megastdyEdu APP 현황? 메가스터디교육

 

https://play.google.com/store/apps/developer?id=megastudyEdu.Co.,Ltd

 

Google Play의 megastudyEdu.Co.,Ltd 개발자 Android 앱

수백만 개의 최신 Android 앱, 게임, 음악, 영화, TV 프로그램, 도서, 잡지 등을 즐기세요. 기기 간에 공유되어 언제 어디서든 이용할 수 있습니다.

play.google.com

반응형
반응형

git - 간편 안내서  https://rogerdudler.github.io/git-guide/index.ko.html

 

git - 간편 안내서 - 어렵지 않아요!

 

rogerdudler.github.io

 

폴더를 하나 만들고, 그 안에서 아래 명령을 실행하세요.
git init

 

저장소 받아오기

로컬 저장소를 복제(clone)하려면 아래 명령을 실행하세요.
git clone /로컬/저장소/경로
원격 서버의 저장소를 복제하려면 아래 명령을 실행하세요.
git clone 사용자명@호스트:/원격/저장소/경로

 

작업의 흐름

여러분의 로컬 저장소는 git이 관리하는 세 그루의 나무로 구성돼있어요.
첫번째 나무인 작업 디렉토리(Working directory)
실제 파일들로 이루어져있고, 두번째 나무인 인덱스(Index)
준비 영역(staging area)의 역할을 하며, 마지막 나무인 HEAD
최종 확정본(commit)을 나타내요.

 

추가와 확정(commit)

변경된 파일은 아래 명령어로 (인덱스에) 추가할 수 있어요.
git add <파일 이름>
git add *
이것이 바로 git의 기본 작업 흐름에서 첫 단계에 해당돼요.
하지만 실제로 변경 내용을 확정하려면 아래 명령을 내려야 한답니다.
git commit -m "이번 확정본에 대한 설명"
자, 이제 변경된 파일이 HEAD에 반영됐어요.
하지만, 원격 저장소에는 아직 반영이 안 됐답니다.

변경 내용 발행(push)하기

현재의 변경 내용은 아직 로컬 저장소의 HEAD 안에 머물고 있어요.
이제 이 변경 내용을 원격 서버로 올려봅시다. 아래 명령을 실행하세요.
git push origin master
(다른 가지를 발행하려면 master를 원하는 가지 이름으로 바꿔주세요.)

만약 기존에 있던 원격 저장소를 복제한 것이 아니라면,
원격 서버의 주소를 git에게 알려줘야 해요.
git remote add origin <원격 서버 주소>
이제 변경 내용을 원격 서버로 발행할 수 있어요.

.

 

 

 

반응형

+ Recent posts