안드로이드 간단한 하이브리드앱 웹뷰방식 소스입니다. 정보
안드로이드 간단한 하이브리드앱 웹뷰방식 소스입니다.첨부파일
본문
안드로이드 간단한 하이브리드앱 웹뷰방식 소스입니다.
URL을 넣으면 웹뷰로 불러와서 보여주는 정도의 기능입니다.
별 것 아닌데 처음부터 만들려면 시간이 좀 걸리니,
필요하신 분 있으실까해서 소스 정리해봤습니다.
푸시도 포함해서 올리고싶었는데 이건 소스 추리는데 시간이 더 걸려서요.
필요하신 분이 있다면 다음 기회에 한 번 올려보겠습니다.
<기능>
1. 웹뷰로 URL 불러옴
2. 스플래시 이미지 보여줌
3. 메인페이지에서 두 번 뒤로가기 누르면 종료 함
<소스 설명>
1. URL 넣기
MainActivity.java 에서 19행에 URL 바꿔주면 됩니다
2. 스플래시 이미지 교체
drawable 폴더에서 splash.png 파일 덮어씌우면 됩니다.
3. 앱 아이콘 교체
res 폴더에서 사이즈별로 ic_launcher.png 이미지 덮어씌우면 됩니다.
4. 앱 이름 설정
strings.xml 파일에서 바꿔주면 됩니다.
URL을 넣으면 웹뷰로 불러와서 보여주는 정도의 기능입니다.
별 것 아닌데 처음부터 만들려면 시간이 좀 걸리니,
필요하신 분 있으실까해서 소스 정리해봤습니다.
푸시도 포함해서 올리고싶었는데 이건 소스 추리는데 시간이 더 걸려서요.
필요하신 분이 있다면 다음 기회에 한 번 올려보겠습니다.
<기능>
1. 웹뷰로 URL 불러옴
2. 스플래시 이미지 보여줌
3. 메인페이지에서 두 번 뒤로가기 누르면 종료 함
<소스 설명>
1. URL 넣기
MainActivity.java 에서 19행에 URL 바꿔주면 됩니다
2. 스플래시 이미지 교체
drawable 폴더에서 splash.png 파일 덮어씌우면 됩니다.
3. 앱 아이콘 교체
res 폴더에서 사이즈별로 ic_launcher.png 이미지 덮어씌우면 됩니다.
4. 앱 이름 설정
strings.xml 파일에서 바꿔주면 됩니다.
추천
10
10
댓글 전체
감사합니다. 유용하게 잘 쓰겠습니다.
네, 도움이 되었다니 기쁘네요 ^^
감사합니다. 필요했던 건데 유용하게 잘 쓸게요.
네, 도움이 되었다니 기쁘네요 ^^
언제 푸시기능도 공개해 주시면 감사하겠습니다.
와우~ 강추입니다, 감사합니다.
염치없지만 푸시도 무지 기다려 지네요 ^^;;;
염치없지만 푸시도 무지 기다려 지네요 ^^;;;
안드로이드 간단한 하이브리드앱 웹뷰
와 감사합니다. 완전 도움되는거 같아요.
푸쉬기능도 완전 기다려집니다.^0^;
푸쉬기능도 완전 기다려집니다.^0^;
수고하셨습니다
좋으네요..감사합니다 근데 궁금한게 잇는ㄴ데요. 이거 모바일로 사용할떄 게시판에 파일 업로드 가능한가요??
하이브리드앱만들떄 그거 떄문에 고생많이 햇는데 가능하다면 받아 보고 싶은데요..
아시는분 혹시 잇으시면 답글좀 부탁 드립니다
하이브리드앱만들떄 그거 떄문에 고생많이 햇는데 가능하다면 받아 보고 싶은데요..
아시는분 혹시 잇으시면 답글좀 부탁 드립니다
아 파일 올리기가 안되네요... 그거좀 가능 하게 안될까요??
꼭 필요 한데.
꼭 필요 한데.
와우 멋집니다.
멋져요.!! 푸쉬알림..~~ 기능을 기대해보는 1인입니다 ^^:
감사합니다!! ㅎ
vol2.egg가 다운이 안되네요 ㅠㅠ
사용법이어찌되나요 ㅠㅠ
안드로이드 스튜디오 설치 했는데
방법대로 찾아도 파일이 안보이네요 ㅠ
안드로이드 스튜디오 설치 했는데
방법대로 찾아도 파일이 안보이네요 ㅠ
감사합니다. 푸시도 기다려집니다. 잘쓰겠습니다.
좋은 정보감사합니다.
splash화면하고 뒤로가기 안되네요^^;
정보 감사합니다.푸시도 기달려집니다..
완전 감사 잘 쓸께요!
완전 짱입니다.
tel: sms: 링크가 안되어서 이리 저리 찾아봐서 적용해봤습니다. 필요하신 분이 있을 것 같아...올립니다.
저도 잘 모르니 질문은 못받아요...제가 적용해보니 잘 되네요..
package com.hybrid.sample;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
private String mCurrentUrl;
private final static String MAIN_URL = "http://food.wehappy.net/";
// BACK 2번 클릭 시 종료 핸들러. 플래그
private Handler mHandler = new Handler();
private boolean mFlag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//스플래시
startActivity(new Intent(this, SplashActivity.class));
//웹뷰 설정
mWebView = (WebView) findViewById(R.id.web);
mWebView.getSettings().setJavaScriptEnabled(true);
//mWebView.setInitialScale(100);
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.setWebViewClient(new WebViewClientClass());
mWebView.loadUrl(MAIN_URL);
}
private class WebViewClientClass extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String overrideUrl) {
if (overrideUrl.startsWith("tel:") || overrideUrl.startsWith("sms:") || overrideUrl.startsWith("smsto:") || overrideUrl.startsWith("mms:") || overrideUrl.startsWith("mmsto:") || overrideUrl.startsWith("mailto:"))
{
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(overrideUrl));
startActivity(intent);
return true;
}
view.loadUrl(overrideUrl);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mWebView.getOriginalUrl().equalsIgnoreCase(MAIN_URL)) {
if (!mFlag) {
Toast.makeText(this, "뒤로 버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show(); // 종료안내 toast 를 출력
mFlag = true;
mHandler.sendEmptyMessageDelayed(0, 2000); // 2000ms 만큼 딜레이
return false;
} else {
// 앱 종료 code
moveTaskToBack(true);
finish();
android.os.Process.killProcess(Process.myPid());
}
} else {
// 뒤로 가기 실행
if (mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
}
}
return true;
}
}
저도 잘 모르니 질문은 못받아요...제가 적용해보니 잘 되네요..
package com.hybrid.sample;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
private String mCurrentUrl;
private final static String MAIN_URL = "http://food.wehappy.net/";
// BACK 2번 클릭 시 종료 핸들러. 플래그
private Handler mHandler = new Handler();
private boolean mFlag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//스플래시
startActivity(new Intent(this, SplashActivity.class));
//웹뷰 설정
mWebView = (WebView) findViewById(R.id.web);
mWebView.getSettings().setJavaScriptEnabled(true);
//mWebView.setInitialScale(100);
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.setWebViewClient(new WebViewClientClass());
mWebView.loadUrl(MAIN_URL);
}
private class WebViewClientClass extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String overrideUrl) {
if (overrideUrl.startsWith("tel:") || overrideUrl.startsWith("sms:") || overrideUrl.startsWith("smsto:") || overrideUrl.startsWith("mms:") || overrideUrl.startsWith("mmsto:") || overrideUrl.startsWith("mailto:"))
{
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(overrideUrl));
startActivity(intent);
return true;
}
view.loadUrl(overrideUrl);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mWebView.getOriginalUrl().equalsIgnoreCase(MAIN_URL)) {
if (!mFlag) {
Toast.makeText(this, "뒤로 버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show(); // 종료안내 toast 를 출력
mFlag = true;
mHandler.sendEmptyMessageDelayed(0, 2000); // 2000ms 만큼 딜레이
return false;
} else {
// 앱 종료 code
moveTaskToBack(true);
finish();
android.os.Process.killProcess(Process.myPid());
}
} else {
// 뒤로 가기 실행
if (mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
}
}
return true;
}
}
아이폰 앱도 이런 파일이 있을까요???
아이폰 앱도 같은방식으로 개발하고싶은데
아이폰 앱도 같은방식으로 개발하고싶은데
너무 감사드립니다. 푸사도 꼭 부탁드리고 싶네요. 감사합니다.
좋은 정보 감사합니다
완전 감사합니다. 필요했는데, 잘 쓰겠습니다.
염치없지만, 가능하면 푸쉬기능도 부탁드립니다 ~
염치없지만, 가능하면 푸쉬기능도 부탁드립니다 ~
완죤 감사합니다.
이렇게 하면 구글 스토어에 등록할수 있는 건가요 ??
감사합니다
감사합니다!