전자정부 프레임워크 egovFramwork DeviceAPI Project 중 예제 InterfaceAPI
- 작성자 :
- 임*태
- 작성일 :
- 2014-06-30 14:01:01
- 조회수 :
- 1,077
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
전자정부 프레임워크 DeviceAPI Project 중 InterfaceAPI 예제에서 기존 안드로이드 어플리케이션과 호환을 위해 해당 XML파일들과 java파일들을 적당한 위치에옮기고 해당 액티비티를 호출해서 쓰려고 하는데 InterfaceAPI.js 에서는 액티비티 호출이 힘들것 같아 EgovInterfacePlugin.java 쪽에서 호출을 하려고 하는데 Activity 상속이 아니고 뭔가 다른것 같아 힘드네요...
어떻게 하면 로그인 이벤트 성공후에 MCTTestActivity.java 란 파일의 화면을 불러올수 있을까요?
아니면 InterfaceAPI.js 에서 네이티브앱인 MCTTestActivity를 불러올수 있을지요.
또 네이티브앱에서 어떻게 다시 하이브리드앱을 호출할수 있을까요?아니면 interfaceAPI.js를 호출하거나..
방법좀 부탁드리겠습니다.
현재 EgovInterfacePlugin.java 에서
Intent itt = new Intent(context.getApplicationContext(),MCTTestActivity.class);
super.onNewIntent(itt);
context.startService(itt);
이런식으로 보내려 해도
06-30 04:58:09.221: W/ActivityManager(58): Unable to start service Intent { cmp=kr.go.egovframework.hyb.interfaceapi/.MCTTestActivity }: not found
06-30 04:58:09.231: D/CordovaActivity(312): onMessage(onPageStarted,file:///android_asset/www/MCTTestActivity)
06-30 04:58:09.301: D/SoftKeyboardDetect(312): Ignore this event
06-30 04:58:09.341: D/Cordova(312): CordovaWebViewClient.onReceivedError: Error code=-14 Description=The requested file was not found. www/MCTTestActivity URL=file:///android_asset/www/MCTTestActivity
06-30 04:58:09.341: D/CordovaActivity(312): onMessage(onReceivedError,{"errorCode":-14,"url":"file:\/\/\/android_asset\/www\/MCTTestActivity","description":"The requested file was not found. www\/MCTTestActivity"})
06-30 04:58:09.421: D/SoftKeyboardDetect(312): Ignore this event
06-30 04:58:09.451: D/CordovaActivity(312): onMessage(onPageStarted,file:///android_asset/www/MCTTestActivity)
06-30 04:58:09.491: D/Cordova(312): onPageFinished(file:///android_asset/www/MCTTestActivity)
06-30 04:58:09.491: D/CordovaActivity(312): onMessage(onPageFinished,file:///android_asset/www/MCTTestActivity)
이런식으로 잘못된 경로만 나오네요..
아무래도 InterfaceAPIGUIDE_AndroidActivity.java 의
super.loadUrl("file:///android_asset/www/intro.html");
이 구문 때문에 경로가 file:///android_asset/www로 잡고있는거 같은데 이런 루트폴더 수정은 어디서할수있을까요?
번거로우시겠지만 질문에(말끝에?가 붙은것) 하나하나 답변좀 해주시면 감사하겠습니다.
어떻게 하면 로그인 이벤트 성공후에 MCTTestActivity.java 란 파일의 화면을 불러올수 있을까요?
아니면 InterfaceAPI.js 에서 네이티브앱인 MCTTestActivity를 불러올수 있을지요.
또 네이티브앱에서 어떻게 다시 하이브리드앱을 호출할수 있을까요?아니면 interfaceAPI.js를 호출하거나..
방법좀 부탁드리겠습니다.
현재 EgovInterfacePlugin.java 에서
Intent itt = new Intent(context.getApplicationContext(),MCTTestActivity.class);
super.onNewIntent(itt);
context.startService(itt);
이런식으로 보내려 해도
06-30 04:58:09.221: W/ActivityManager(58): Unable to start service Intent { cmp=kr.go.egovframework.hyb.interfaceapi/.MCTTestActivity }: not found
06-30 04:58:09.231: D/CordovaActivity(312): onMessage(onPageStarted,file:///android_asset/www/MCTTestActivity)
06-30 04:58:09.301: D/SoftKeyboardDetect(312): Ignore this event
06-30 04:58:09.341: D/Cordova(312): CordovaWebViewClient.onReceivedError: Error code=-14 Description=The requested file was not found. www/MCTTestActivity URL=file:///android_asset/www/MCTTestActivity
06-30 04:58:09.341: D/CordovaActivity(312): onMessage(onReceivedError,{"errorCode":-14,"url":"file:\/\/\/android_asset\/www\/MCTTestActivity","description":"The requested file was not found. www\/MCTTestActivity"})
06-30 04:58:09.421: D/SoftKeyboardDetect(312): Ignore this event
06-30 04:58:09.451: D/CordovaActivity(312): onMessage(onPageStarted,file:///android_asset/www/MCTTestActivity)
06-30 04:58:09.491: D/Cordova(312): onPageFinished(file:///android_asset/www/MCTTestActivity)
06-30 04:58:09.491: D/CordovaActivity(312): onMessage(onPageFinished,file:///android_asset/www/MCTTestActivity)
이런식으로 잘못된 경로만 나오네요..
아무래도 InterfaceAPIGUIDE_AndroidActivity.java 의
super.loadUrl("file:///android_asset/www/intro.html");
이 구문 때문에 경로가 file:///android_asset/www로 잡고있는거 같은데 이런 루트폴더 수정은 어디서할수있을까요?
번거로우시겠지만 질문에(말끝에?가 붙은것) 하나하나 답변좀 해주시면 감사하겠습니다.
A
안녕하세요. 임준태님.
우선 하이브리드 어플리케이션의 경우 네이티브 코드의 호출을 위해 제공되는 것이 Device API 입니다.
전자정부 표준프레임워크에서 채택하고 있는 폰갭의 경우 위의 Device API 를 기본적으로 제공하고는 있지만, 사용자의 커스텀 기능을 호출 가능하도록 내부적으로 Plug in 형태로 커스텀 Device API 를 추가하는 방식을 제공하고 있습니다.
따라서 별도의 네이티브 코드로 개발 된 기능을 하이브리드 어플리케이션 내에서 호출하시기 위해서는 추가적인 Plug in 개발이 필요하시며,
말씀주신 EgovInterfacePlugin.java은 앞에서 말씀드린 바와 같인 lib 폴더내의 spring android 내의 rest 기능을 호출하기 위해서 추가로 개발 된 클래스 입니다.
또한 Acrivity 의 경우 일반적인 자바 기능이라기 보다는 안드로이드 자체적으로 화면 구성을 위해 제공되는 컴포넌트 로서,
Main Activity 내에서 다른 Activity 를 호출 하시기 위해서는, 일반적인 하이브리드 구현 방식에 추가적으로 Android 개발 방식을 이해하시고 개발 하시는게 필요합니다.
일반적인 하이브리드 어플리케이션 내에서는 Main Activity 내에서 WebView 를 이용하여 웹 리소스를 화면에 출력(super.loadUrl("file:///android_asset/www/intro.html"); ) 하고있기 때문에, 다른 Activity 로 화면 전환을 하시기 위해서는 Android 의 Webview 호출 방식 및 Activity 간 화면 전환 방식을 확인하신 후 개발이 필요하실 것 같습니다.
추가로 ile:///android_asset/www.. 의 경우는 assets 내의 www 디렉토리를 의미하는 것으로.. 해당 디렉토리로 루트가 정해져 있는 이유는 웹 리소스들이 컴파일 되는 것을 방지하기 위해서(assets 폴더내의 파일은 리소스 형태로 인식되어 컴파일 되지 않음) 입니다.
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.
우선 하이브리드 어플리케이션의 경우 네이티브 코드의 호출을 위해 제공되는 것이 Device API 입니다.
전자정부 표준프레임워크에서 채택하고 있는 폰갭의 경우 위의 Device API 를 기본적으로 제공하고는 있지만, 사용자의 커스텀 기능을 호출 가능하도록 내부적으로 Plug in 형태로 커스텀 Device API 를 추가하는 방식을 제공하고 있습니다.
따라서 별도의 네이티브 코드로 개발 된 기능을 하이브리드 어플리케이션 내에서 호출하시기 위해서는 추가적인 Plug in 개발이 필요하시며,
말씀주신 EgovInterfacePlugin.java은 앞에서 말씀드린 바와 같인 lib 폴더내의 spring android 내의 rest 기능을 호출하기 위해서 추가로 개발 된 클래스 입니다.
또한 Acrivity 의 경우 일반적인 자바 기능이라기 보다는 안드로이드 자체적으로 화면 구성을 위해 제공되는 컴포넌트 로서,
Main Activity 내에서 다른 Activity 를 호출 하시기 위해서는, 일반적인 하이브리드 구현 방식에 추가적으로 Android 개발 방식을 이해하시고 개발 하시는게 필요합니다.
일반적인 하이브리드 어플리케이션 내에서는 Main Activity 내에서 WebView 를 이용하여 웹 리소스를 화면에 출력(super.loadUrl("file:///android_asset/www/intro.html"); ) 하고있기 때문에, 다른 Activity 로 화면 전환을 하시기 위해서는 Android 의 Webview 호출 방식 및 Activity 간 화면 전환 방식을 확인하신 후 개발이 필요하실 것 같습니다.
추가로 ile:///android_asset/www.. 의 경우는 assets 내의 www 디렉토리를 의미하는 것으로.. 해당 디렉토리로 루트가 정해져 있는 이유는 웹 리소스들이 컴파일 되는 것을 방지하기 위해서(assets 폴더내의 파일은 리소스 형태로 인식되어 컴파일 되지 않음) 입니다.
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.