You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by "Stephen J Fuhry (JIRA)" <ji...@apache.org> on 2012/07/12 19:04:33 UTC

[jira] [Updated] (CB-1047) Android UUID can sometimes be undefined (or otherwise not unique) because of limitations in ANDROID_ID

     [ https://issues.apache.org/jira/browse/CB-1047?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stephen J Fuhry updated CB-1047:
--------------------------------

    Description: 
There are many documented situations where the following does not really return a unique identifier ([link to cordova source|https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-android.git;a=blob;f=framework/src/org/apache/cordova/Device.java#l173]):

{code:java}
android.provider.Settings.Secure.ANDROID_ID
{code}

Would it make sense to implement a solution like this?

http://android-developers.blogspot.com/2011/03/identifying-app-installations.html
see also: http://stackoverflow.com/a/2853253/111033

I've used the above mentioned solution in native Android applications without issue.

It *might* make sense to offer this as a value completely separate from device.uuid.. there are many reports that some hardware vendors are actually populating ANDROID_ID with a manufacturer ID (i.e. ANDROID_ID returns a value, but it is not unique between devices of the same make / model! How deceptive.).

Perhaps it could be offered as:

{code:javascript}
device.install_id
{code}

or something so that developers could opt-in to use it? This way it wouldn't break BC for those who are interested in maintaining device or install ids from previous versions. Then, you could get a guaranteed unique id by doing:

{code:javascript}
var deviceId = ('install_id' in device ? device.uuid : device.install_id);
{code}

  was:
There are many documented situations where the following does not really return a unique identifier ([link to cordova source|https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-android.git;a=blob;f=framework/src/org/apache/cordova/Device.java#l173]):

{code:java}
android.provider.Settings.Secure.ANDROID_ID
{code}

Would it make sense to implement a solution like this?

http://android-developers.blogspot.com/2011/03/identifying-app-installations.html
see also: http://stackoverflow.com/a/2853253/111033

I've used the above mentioned solution in native Android applications without issue.

It *might* make sense to offer this as a value completely separate from device.uuid.. there are many reports that some hardware vendors are actually populating ANDROID_ID with a manufacturer ID (i.e. ANDROID_ID returns a value, but it is not unique between devices of the same make / model! How deceptive.).

Perhaps it could be offered as:

{code:javascript}
device.install_id
{code}

or something so that developers could opt-in to use it? This way it wouldn't break BC for those who are interested in maintaining device or install ids from previous versions. Then, you could get a guaranteed unique id by doing:

{code:javascript}
var deviceId = (device.install_id === null ? device.uuid : device.install_id);
{code}

    
> Android UUID can sometimes be undefined (or otherwise not unique) because of limitations in ANDROID_ID
> ------------------------------------------------------------------------------------------------------
>
>                 Key: CB-1047
>                 URL: https://issues.apache.org/jira/browse/CB-1047
>             Project: Apache Cordova
>          Issue Type: Wish
>          Components: Android
>    Affects Versions: 1.9.0
>            Reporter: Stephen J Fuhry
>            Assignee: Joe Bowser
>
> There are many documented situations where the following does not really return a unique identifier ([link to cordova source|https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-android.git;a=blob;f=framework/src/org/apache/cordova/Device.java#l173]):
> {code:java}
> android.provider.Settings.Secure.ANDROID_ID
> {code}
> Would it make sense to implement a solution like this?
> http://android-developers.blogspot.com/2011/03/identifying-app-installations.html
> see also: http://stackoverflow.com/a/2853253/111033
> I've used the above mentioned solution in native Android applications without issue.
> It *might* make sense to offer this as a value completely separate from device.uuid.. there are many reports that some hardware vendors are actually populating ANDROID_ID with a manufacturer ID (i.e. ANDROID_ID returns a value, but it is not unique between devices of the same make / model! How deceptive.).
> Perhaps it could be offered as:
> {code:javascript}
> device.install_id
> {code}
> or something so that developers could opt-in to use it? This way it wouldn't break BC for those who are interested in maintaining device or install ids from previous versions. Then, you could get a guaranteed unique id by doing:
> {code:javascript}
> var deviceId = ('install_id' in device ? device.uuid : device.install_id);
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira