views:

104

answers:

3

I might not like it, but the number of unofficial Android devices is growing and most of them have custom modifications to the Android OS or do not comply with the Android Compatibility Definition Document.

For example, the aPad/iRobot has made changes to the way the system handles screen rotations and the Eken has a virtual Menu button that disappears when the app executes on full-screen mode.

Apps that want to be compatible with these devices might need to deal with them on a case-by-case basis, using the Build class to identify them.

Unfortunately I don't have access to these devices and I don't know how to identify them. Does anybody have a list of Build values for unofficial Android devices, or alternatively is there a way to know if the device is an official Android device (querying for the Market app, perhaps)?

+5  A: 

I'd say that if they don't comply with the Compatibility Definition Document, then that's their problem. You shouldn't have to worry about devices that don't conform to the Android standard, just like if a computer manufacturer made a computer that didn't have a keyboard, it isn't your job to work around the differences in hardware.

Ben Alpert
+1, great answer.
ceejayoz
I wish it were like that. Unfortunately, most users don't know about the CDD, and couldn't care less. Like it or not, these non-standard devices are part of the Android ecosystem, and their users expect Android apps to work on them. One of our apps doesn't work on one of these models and we regularly get emails complaining about it.
hgpc
Is it only one model you get complaints about? If so, you could only fix your code to work on the devices that people complain about. (And also maybe send an angry letter to the manufacturer about how they should comply with the Android specs!)
Ben Alpert
I actually sent such letter. :) But no it's not just one model, and in any case, I thought a generic question might be useful to other Android developers.
hgpc
They don't get the Market if they don't comply to CDD. So they are not really part of the Android ecosystem.
alexanderblom
Being able to install non-Market apps is one of the great advantages of Android.
hgpc
A: 

I found this on an Android blog:

import Android.Provider.Settings.System; 
String Android_ID = System.getString
    (this.getContentResolver(), System.ANDROID_ID); 

I'm not sure how helpful this is, although your application could record this ID and report it.

Here's another option, from the same Android blog.

Gilbert Le Blanc
I think that's to get the ID of an specific device, not the model. The model can be accessed through the Build class.
hgpc
A: 

I created an app called Bug Reporter that sends all the Build values via email. If I get a report like this, I kindly ask the user to run it and I can use that to properly identify the device.

hgpc