2012-12-13 106 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頁面。

@編輯:它現在顯示結果;但是,所有結果都是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

你可以嘗試把它放在alert'contacts [i] .name .givenName'並看到它仍然爲空? –

回答

17

首先創建一個Android應用的Eclipse然後

按照以下步驟:

1進口科爾多瓦-2.2.0.jar文件到您的項目。

[2]將cordova-2.2.0.js文件添加到assets/www文件夾中。

[3]複製XML文件夾帶着科爾多瓦源到res文件夾

[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]將index.html文件添加到具有此內容的assets/www文件夾中。

<!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]向Manifest文件中添加以下權限。

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

就是這樣。

您將在屏幕上顯示聯繫人詳細信息。

希望它可以幫助你。

謝謝。

+0

感謝您的詳細指導;但是,它似乎並不奏效。 Alert顯示'Done' - >'693' - >'null' - >'null' .... ahh,就是不明白。 –

+0

把條件放在alert的上方if(contacts [i] .displayName!= null )'。 –

+0

有趣!有很多'null'值,其餘的不是。謝謝,它現在工作。 –

3

更容易在Eclipse中使用PhoneGap的替代方案。
1.Click幫助 - Eclipse的市場
2.Search-「電話峽」
3.安裝的PhoneGap(PhoneGap的也被稱爲科爾多瓦)
做到這一點只有一日時間。 從下次你創建phonegap項目開始,創建一個「New PhoneGap Project」。就這樣。這個過程爲您節省了大量的時間和錯誤。

+0

找到沒有phonegap。只需AppLaud,LDPA,MyEclipse等,哪一個最適合使用?我想爲WP8和iOS創建應用程序以及 – ProblemsOfSumit

+0

@sourav我可以找到類似的東西。 –

相關問題