2012-12-13 2 views
5

Android 기기 (Samsung Galaxy S II)에서 PhoneGap을 처음 실행하려고합니다. 그러나, 그것은 작동하지 않는 것 같습니다.PhoneGap이 Android에서 실행되지 않음

여기 코드는 지금까지 시도 :

<html> 
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
      <meta name="format-detection" content="telephone=no" /> 
      <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" 
    /> 
      <title>Hello World</title> 
      <script type="text/javascript" src="cordova-2.2.0.js"></script> 
      <script type="text/javascript" charset="utf-8"> 
      document.addEventListener("deviceready", onDeviceReady, false); 

      function onDeviceReady() { 
       var options = new ContactFindOptions(); 
       options.filter = ""; 
       options.multiple = true; 
       var filter = ["displayName"]; 
       navigator.contacts.find(filter, onSuccess, onError, options); 
      } 

      function onSuccess(contacts) { 
       for(var i = 0; i < contacts.length; ++i) { 
        alert(contacts[i].displayName); 
       } 
       alert("OK then"); 
       console.log("OK"); 
      } 

      function onError(contactError) { 
       alert("onError!"); 
       console.log("Fail"); 
      } 
      </script> 
     </head> 
     <body > 


     </body> 
     <h1> Example </h1> 
     <p> Find Contacts </p> 
    </html> 

아무것도 쇼 업! 경고도없고, 로그도없고 단지 body 이상의 HTML 페이지 만 표시합니다.

@Edit : 결과를 표시합니다. 그러나 모든 결과는 null이며 Alert 대화 상자에 나타납니다. 누구든지이 경험이 있습니까?

+0

귀하의 'contacts.length'은 무엇입니까? –

+0

@PratikSharma : 발견 된 연락처 수. 내 전화는'693'이지만, 모든 displayName은'null'입니다. 다음과 같이 'null'이되어서는 안됩니다. http://docs.phonegap.com/en/2.2.0/cordova_contacts_contacts.md.html#Contact –

+0

알림을 'contacts [i] .name .givenName' 그리고 아직도 그 null을 참조하십시오? –

답변

17

먼저 이클립스 하나 안드로이드 응용 프로그램을 만든 다음

이 단계를 수행하십시오

1 가져 오기 코르도바-2.2.0.jar 파일을 프로젝트에.

[2] cordova-2.2.0.js 파일을 assets/www 폴더에 추가하십시오.

[3] 복사 XML 폴더 [4]이 함께 활동을 교체 고해상도 폴더

에 코르도바 소스와 함께.

package com.cordovatest; 

import org.apache.cordova.DroidGap; 

import android.os.Bundle; 

public class MainActivity extends DroidGap { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     super.setIntegerProperty("loadUrlTimeoutValue", 60000);   
     super.loadUrl("file:///android_asset/www/index.html",1000); 
    } 


} 

[5]이 콘텐츠가있는 assets/www 폴더에 index.html 파일을 추가하십시오.

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Contact Example</title> 

    <script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script> 
    <script type="text/javascript" charset="utf-8"> 

    document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() {  
     callFetchContacts(); 
    } 

    function callFetchContacts(){ 
     var options = new ContactFindOptions(); 
     options.multiple=true; 
     var fields = ["id","name", "displayName", "organizations","emails","phoneNumbers","addresses"]; 
     navigator.contacts.find(fields, onSuccess, onError, options); 

    } 

    function onSuccess(contacts) { 

     alert('Done'); 
     alert(contacts.length); 

     for(var i = 0; i < contacts.length; i++){ 
      alert(contacts[i].displayName); 
     } 


    }; 

    function onError(contactError) { 
     alert('onError!'); 
    } 

    </script> 
    </head> 
    <body> 
    <h1>Example</h1> 
    <p>Display Contacts</p> 
    </body> 
</html> 

[6] 사용자 매니페스트 파일에 다음 권한을 추가하십시오.

<uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO"/> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 

That 's It.

화면에 연락처 세부 정보가 표시됩니다.

희망이 있으면 도움이됩니다.

감사합니다.

+0

주셔서 감사합니다; 그러나, 그것은 작동하지 않는 것 같습니다. 경고는'Done' ->'693' ->'null' ->'null' .... 아, 그냥 이해가 안돼 .. –

+0

위의 조건을 넣어'if (contacts [i] .displayName! = null)'. –

+0

흥미 롭습니다! 많은'null' 값들이 있고 나머지는 그렇지 않습니다. 고마워, 지금 일했다. –

3

Eclipse에서 PhoneGap을 사용하는 것의 쉬운 대안.
1.Click 도움말 - 이클립스 마켓 플레이스
2.Search- "전화 갭"
3.Install 폰갭 (폰갭도 코르도바라고 함)
이 단지 1 시간 작업을 수행합니다. 다음에 전화 걸기 프로젝트를 만들 때마다 "새 PhoneGap 프로젝트"만 만듭니다. 그게 다야. 이 프로세스는 많은 시간과 오류를 줄여줍니다.

+0

전화 접속 찾을 수 없습니다. 그냥 AppLaud, LDPA, MyEclipse ... 요법, 사용하는 것이 가장 좋습니다. WP8 및 iOS 용 앱을 만들고 싶습니다. – ProblemsOfSumit

+0

@sourav이 같은 것을 찾을 수있었습니다. –