Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- soundpool
- 안드로이드 푸쉬
- FCM
- 폼메일
- 우분투
- 안드로이드 푸시
- xe
- javascript
- curl
- html5
- WebView
- mysql
- 안드로이드
- php 취약점
- Mail Server
- php 시큐어코딩
- 자동 생성
- chart.js
- roundcube
- 자바스크립트
- 설치
- 안드로이드 gcm
- PHP
- Android
- dovecot
- C#
- android 효과음
- not working
- C# IO
- UML
Archives
- Today
- Total
그러냐
webview 로그인 후 뒤로가기 / 웹페이지를 사용할 수 없음 / 리다이렉트 본문
반응형
http://blog.acronym.co.kr/549 리다이렉트일 경우
전체댓글수 7
- thisgun 13-01-21 11:04 질문자가 질문 해결에 도움이 되어 선택한 답변입니다.
소스보기
- 아이폰은 잘 모르구요... 안드로이드에서 제가 했던 방법입니다.
WebView webview; //웹뷰 선언
WebBackForwardList mWebBackForwardList = webview.copyBackForwardList(); //웹뷰의 히스토리 목록을 가져온다.
String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl(); //웹뷰의 뒤로가기 url을 구한다.
private static final Set<String> VALUES = new HashSet<String>(Arrays.asList(
new String[] {
"/member/logout.php",
"/member/login.php",
"/member/login_process.php",
"/local/request.php"
}
)); //뒤로가기 막기 url을 배열변수에 넣는다.
boolean bool_value = VALUES.contains(historyUrl); //배열변수에 해당값이 들어있으면 true, false
if(bool_value){
webview.loadUrl("http://도메인네임.com/");
} else {
webview.goBack(); //뒤로가기
}
위의 과정은 안드로이드에서 KeyEvent.KEYCODE_BACK 이벤트가 일어났을때 처리한거구요. 시작페이지에서 뒤로가기 누르면 앱을 종료 할수 있도록 처리도 해 놓아야 합니다. 그리고 웹에서도 kionpark님이 답변한 것처럼 처리도 해 놓아야 합니다.
아래는 제가 안드로이드 뒤로가기 할때 처리한 소스입니다.
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
String current_Url = webview.getUrl();
boolean bool_current_val = current_Url.equalsIgnoreCase("http://도메인네임.com/");
//Log.e("state1", current_Url+"");
//Log.e("state1", bool_current_val+"");
if(webview.canGoBack() && !bool_current_val){
WebBackForwardList mWebBackForwardList = webview.copyBackForwardList();
String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl();
//Log.e("state1", historyUrl+"");
boolean bool_value = VALUES.contains(historyUrl);
if(bool_value){
webview.loadUrl("http://도메인네임.com/");
} else {
webview.goBack();
}
return true;
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(_activity);
builder.setMessage("종료하시겠습니까?")
.setTitle("Quit")
.setCancelable(false)
.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
android.os.Process.killProcess(android.os.Process.myPid() );
}
}).setPositiveButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
return super.onKeyDown(keyCode, event);
} - 영쥬 13-08-08 13:14
소스보기
- 제가질문드린건아니지만..................... 안드로이드쪽에서 문제가 있어서 찾던중이엇는데........ 이 소스 보고 해결됐습니다. 감사합니당 !!! ^^
- 나락 13-01-20 23:03
소스보기
- 방법은 많아보여여...
세션시간을 100년으로 잡으시면 되기도 하겠고....
근데 다른 더 좋은 방법도 있을거같아여 ^^; - 하이랭커 13-01-21 00:28
소스보기
- 세션말구요 ㅠㅠ.... 뒤로가기 버튼이 안먹혔으면 좋겠거든요...
반응형
'android' 카테고리의 다른 글
android 6 권한 주기 (0) | 2017.03.06 |
---|---|
webview 새로고침현상 카메라로찍었을때 (1) | 2017.03.06 |
카톡 SDK 의 안드로이드 기기 unique ID 얻기 방법 (0) | 2017.02.23 |
안드로이드스튜디오 단축키 (0) | 2017.02.16 |
colorAccent / @color/colorAccent 에러 You need to use a Theme.AppCompat theme (0) | 2017.02.16 |