2012-12-13 17 views
5

Ich versuche, PhoneGap zum ersten Mal auf Android-Gerät (Samsung Galaxy S II) zu laufen; Es scheint jedoch nicht zu funktionieren.PhoneGap nicht in Android

Hier ist der Code, den ich versuchen, so weit:

<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> 

Nichts Show-ups! Keine Warnung, kein Protokoll, es wird nur eine HTML-Seite mit dem Inhalt body angezeigt.

@Edit: Ergebnisse werden jetzt angezeigt; Alle Ergebnisse sind jedoch null, die auf Alert Dialog angezeigt werden. Hat jemand das erlebt?

+0

was ist Ihre 'contacts.length'? –

+0

@PratikSharma: Anzahl der Kontakte gefunden. Mein Handy hat '693', aber alle' displayName' sind 'null'. Es sollte nicht "null" lauten: http://docs.phonegap.com/en/2.2.0/cordova_contacts_contacts.md.html#Contact –

+0

können Sie versuchen, dies in alert 'contacts [i] .name zu setzen .givenName' und es ist immer noch Null? –

Antwort

17

Erstellen Sie zunächst eine Android-Anwendung mit Eclipse- und dann

Folgen Sie dieser Schritte:

1 Import cordova-2.2.0.jar Datei in Ihr Projekt.

[2] Fügen Sie die Datei cordova-2.2.0.js in Ihren Ordner "assets/www" ein.

[3] Copy xml Ordner kam mit cordova Quelle in res Ordner

[4] mit dieser Ihre Aktivität ersetzen.

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] Fügen Sie die Datei index.html in den Ordner Assets/www mit diesem Inhalt ein.

<!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] Fügen Sie die folgenden Berechtigungen in Ihre Manifest-Datei hinzu.

<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" /> 

Das ist es.

Sie werden Ihre Kontaktdaten auf Ihrem Bildschirm haben.

Ich hoffe, es hilft Ihnen.

Danke.

+0

danke für deine details guide; Es scheint jedoch nicht zu funktionieren. Alert zeigt "Fertig" -> '693' ->' null' -> 'null' .... ahh, verstehe einfach nicht .. –

+0

setzen Bedingung über Warnung' if (Kontakte [i] .displayName! = Null) '. –

+0

interessant! Es gibt viele "Null" -Werte, der Rest nicht. Danke, es hat jetzt funktioniert. –

3

Eine einfachere Alternative zur Verwendung von PhoneGap in Eclipse.
1.Click Hilfe-Eclipse-Marktplatz
2.Search- "Phone Gap"
3.Install Phonegap
Tun Sie dies nur das erste Mal (phonegap auch cordova genannt). Wenn Sie das nächste Mal ein Phonegap-Projekt erstellen, erstellen Sie einfach ein "New PhoneGap Project". Das ist alles. Dieser Prozess spart Ihnen viel Zeit und Fehler.

+0

zu bekommen Es gibt keine Phonagap gefunden. Nur AppLaud, LDPA, MyEclipse ... ect, welches ist am besten zu benutzen? Ich möchte auch Apps für WP8 und iOS erstellen. – ProblemsOfSumit

+0

@sourav Ich konnte so etwas finden. –

Verwandte Themen