2013-10-27 2 views
2

임베디드 WebView를 사용하는 경우 Javascript에서 Android 기본 API를 호출 할 수 있음을 이해합니다.브라우저에서 Android API에 액세스하기

그러나 Android의 일반 브라우저 (예 : Firefox Mobile 또는 주식 브라우저)에서 이러한 API에 액세스 할 수 있습니까? 나는 분명히 어딘가에 허가를 부여해야한다고 생각한다. 그렇지 않으면 이것이 큰 보안 구멍이 될 것이다.

javascript를 실행하는 특수 앱을 만드는 데 문제가 있습니다. 내 응용 프로그램은 서버에서 실행되는 일반 웹 응용 프로그램 (안드로이드 응용 프로그램에 포함되지 않음)이며 자주 업데이트되므로 (응용 프로그램에 포함하기에 적합하지 않음) 경우에 따라 다양한 정보를 직접 쿼리 할 수있는 기능을 추가하는 것이 유용 할 수 있습니다 웹 페이지에서 주로 안드로이드가 브라우저를 죽이는 것을 막고 재 입력시 웹 앱의 긴 재 장전을 강요했다. 단지 수동으로 정보를 얻기 위해 파이어 폭스 (Firefox)에서 5 초가 걸렸기 때문이다.

+1

http://phonegap.com/ – kol

답변

2

각 브라우저마다 고유 한 확장 프로그램을 빌드하지 않는 한 어쨌든 일반 브라우저에서 Android API를 호출 할 수는 없습니다 (DOM 모델의 일부로 제공되지 않음). 지루한 작업 일 수도 있고 가치가 없을 수도 있습니다. 바로 이것이 바로 임베디드 WebView가 Phonegap과 같은 이유입니다.

이제 언제든지 서버에서 WebView에서 웹 페이지를로드하는 다른 방법을 시도해 볼 수 있습니다. 기본적으로 웹보기는 기기의 로컬 저장소에서 콘텐츠를로드하지만 XHR을 사용하면 기존 웹 페이지를 호출하여 웹보기에 표시 할 수 있습니다.

브라우저에서 전체 페이지를 완전히로드하기 위해 서버 또는 iframe의 콘텐츠를 포함 할 수있는 div를 사용하여이 작업을 수행 할 수 있습니다. 두 번째 접근법은 현재 웹 페이지를 완전히 재사용 할 수 있기 때문에 더 투명하지만, 교차 출처 보안 제약으로 인해 래퍼와 웹 페이지를 통신 할 수 없습니다. 첫 번째 접근법을 제안 하겠지만, 서버 웹 페이지를 리팩토링하여 응용 프로그램과보다 잘 통합되도록해야합니다.

이 (내가 jQuery를 사용하고있는 예에서 편의상,하지만 당신이 직접 XHR 사용 할 수있는)과 같이 작동합니다 : 당신은 작은 당신의 웹보기에서 index.html을 (폰갭을 만들

  1. 또는

    <html>
    <head>
    <!-- Load all your css and javascript stuff here -->
    </head>
    <body>
    <div id="wrapperdiv"></div>
    </body>
    </html>

  2. 동적으로 서버에서 콘텐츠를로드 할 자바 스크립트를 포함 : 당신이 무엇을 사용)과 래퍼 역할을하는 정의하면 서버에 호출을 수행하는

    $(function() { 
        $.ajax({ 
         url: 'http://www.michaels-server.com/your-web-endpoint', 
         type: 'GET', 
         crossDomain: true, 
         success: function(data, textStatus, xhr) { 
          $('#wrapperdiv').html(data); 
         } 
         error: function() { alert("Cannot contact server."); } 
        }); 
    }); 
    
  3. 원본 출처 요청을 허용하도록 내장 웹보기를 구성하십시오.

    < 위젯 ... >

    < - 여기 위젯 구성 재료 - >

    < 액세스 기원 = " * "/>

    < : 폰갭에서 당신은 그런 짓을!- 더 위젯 구성 재료 - >

    </위젯 >

당신의 HTML 래퍼의 사업부는 동적으로 서버에서 콘텐츠를로드합니다. 해당 페이지의 모든 자바 스크립트는 Phonegap에서 제공하는 것과 같은 내장 웹 뷰 DOM 모델을 사용하여 기본 API를 호출 할 수 있습니다.

희망이 도움이됩니다.

+0

예, 매우 도움이됩니다. 감사합니다. – Michael

관련 문제