2013-05-01 1 views
2

질문이 있습니다. HTML5 페이지가 Android의 기본 구성 요소와 상호 작용할 수 있습니까?HTML5에서 기본 구성 요소에 액세스 할 수 있습니까?

내가 달성하고자하는 것은 콘텐츠 목록을 표시하는 HTML5 페이지에있는 것입니다. 일부 콘텐츠가 도착했다는 알림을 만들고 싶습니다.?

내 생각에, 웹 뷰를 사용하고 HTML5 콘텐츠를 표시하는 방법이지만 웹 뷰에서 콜백을 받으면 알림 표시 줄을 통해 일부 콘텐츠가 도착했음을 사용자에게 알릴 수 있습니다. 네이티브 안드로이드 코딩을 사용하여 액세스 하시겠습니까?

나는 안드로이드에 대한 알림을 만들고 웹뷰를 만드는 법을 이미 알고있다. html5 페이지에서 안드로이드 구성 요소로 데이터를 보낼 수있는 방법을 찾아야한다.

달성 가능하거나 야심 차게 될 수 있습니까?

답변

3

예, JavaScript 인터페이스를 통해이를 수행 할 수 있습니다. 이를 통해 JavaScript는 사용자가 첨부 한 인터페이스에 정의 된 함수를 호출 할 수 있습니다. 에서

http://developer.android.com/guide/webapps/webview.html

당신의 Activity : 당신이 할 수있는 Javascript 지금

public class WebAppInterface { 
    Context mContext; 

    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a toast from the web page */ 
    @JavascriptInterface 
    public void showToast(String toast) { 
     Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
    } 
} 

:

MyAndroidInterface.showToast("hello world"); 
호출에 갈 곳

WebAppInterface mInterface; 

public void onCreate() { 
    mInterface = new WebAppInterface(this); 
    mWebView.addJavascriptInterface(mInterface, "MyAndroidInterface") 
} 

지금 객체를 정의

돌아 오는 길 (native에서 Javascript까지)은 Javascript injection을 통해 할 수 있습니다. Javascript에서 함수를 정의 :

function helloBack(param) { 
} 

지금 당신이 mWebView.loadUrl("javascript:helloBack(hi);");

+0

우수한 호출 할 수 있습니다. 내가 찾고있는 것. 이것으로 인 텐트를 보낼 수 있으며이 인터페이스를 사용하여 서비스에 액세스 할 수 있습니까? – jonney

+0

예, 구성 요소에 인 텐트 전송에 필요한 컨텍스트가 있는지 확인하십시오. – RvdK

관련 문제