2010-05-20 65 views
4

我在寫一個將請求發送到中央數據庫的PhoneGap應用程序。它需要能夠識別連接到它的獨特設備。device.uuid在Android上的PhoneGap中未定義?

PhoneGap的device.uuid property似乎會做的伎倆。在webOS和iPhone上,我找回了一串獨特的字母數字字符,這將滿足我的需要。但是,我測試過的Android設備(Motorola Droid和Android SDK模擬器,均運行Android 2.1)返回「undefined」作爲device.uuid。在所有三個平臺

device.platformdevice.name返回正確的值,所以這個問題沒有與device對象本身(它是在我使用它的代碼塊中定義)來完成。

這是Android的限制嗎? PhoneGap有問題嗎?

如果不是通過device.uuid還有其他方法可以獲得這樣的全球唯一標識符嗎?

編輯:看來,deviceready事件永遠不會被解僱,這需要發生在device.uuid屬性變得可用之前。

+1

的deviceready功能不被解僱「導致這個代碼'if((state =='loaded'|| state =='complete')&& DeviceInfo.uuid!= null)'我也在努力:C – yoshi 2011-12-08 16:28:48

+0

節點device.uuid是真正唯一的在iOS上,在Android上這是在系統啓動時生成的一個隨機數 - [檢查文檔](http://docs.phonegap.com/en/1.0.0/phonegap_device_device.md.html#device.uuid) – Leon 2011-12-14 15:10:44

回答

3

根據Phonegap版本和/或設備的不同,您可能需要明確安裝該插件。在我們的項目中,設備存在但device.uuid未定義。運行cordova plugin add org.apache.cordova.device解決了我們的問題。

1

我還沒有找到解決方案,但值得注意的是,這個問題在Android 2.2中得到了解決。但除此之外,如果設備運行2.1或更早版本,則必須找到其他方式獲取唯一的設備標識符。

+0

顯然,這仍然發生在我的愛可視平板電腦上,它運行** Android 2.2.1 ** – 2011-06-15 17:33:12

+0

它仍然發生在HTC Flyer上,具有** Android 3.2.1 ** – micred 2012-02-08 08:02:11

0

我有同樣的問題。它以前工作,我最終追溯到清單權限的問題。

如果android.permission.ACCESS_NETWORK_STATE未啓用,deviceready將不會觸發,並且device.uuid將不可用。

0

這個工作對我來說:

第一次安裝設備插件:

cordova plugin add cordova-plugin-device 

,並在我的index.js我有這樣的:

var app = { 
    initialize: function() { 
     $.support.cors = true; 
     this.bindEvents(); 
    }, 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 
    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 
    }, 
    receivedEvent: function(id) { 
     console.log('Received Event: ' + id); 
    }, 
    getDeviceInfo: function() { 
     var aio = new Object(); 
     aio.agent = device.platform + "," + device.version + "," + device.model; 
     aio.deviceid = device.uuid; 
     return aio; 
    } 
}; 
app.initialize(); 

module.controller('AppController',function($scope) { 
    console.log('GOOOO'); 
    ons.ready(function() { 
     console.log("ons ready"); 

     var appInfoObj = app.getDeviceInfo(); 
     console.log("Agent: " + appInfoObj.agent); 
     console.log("UUID: " + appInfoObj.deviceid); 
    }); 
}); 
相關問題