Thursday, 28 April 2016

java - Proper use cases for Android UserManager.isUserAGoat()?





I was looking at the new APIs introduced in Android 4.2.
While looking at the UserManager class I came across the following method:




public boolean isUserAGoat()



Used to determine whether the user making this call is subject to teleportations.



Returns whether the user making this call is a goat.




How and when should this be used?


Answer



From their source, the method used to return false until it was changed in API 21.




/**
* Used to determine whether the user making this call is subject to
* teleportations.
* @return whether the user making this call is a goat
*/
public boolean isUserAGoat() {
return false;
}



It looks like the method has no real use for us as developers. Someone has previously stated that it might be an Easter egg.



In API 21 the implementation was changed to check if there is an installed app with the package com.coffeestainstudios.goatsimulator



/**
* Used to determine whether the user making this call is subject to
* teleportations.
*
*

As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
* now automatically identify goats using advanced goat recognition technology.



*
* @return Returns true if the user making this call is a goat.
*/
public boolean isUserAGoat() {
return mContext.getPackageManager()
.isPackageAvailable("com.coffeestainstudios.goatsimulator");
}


Here is the source and the change.



No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...