Thursday, August 8, 2019

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

hard drive - Leaving bad sectors in unformatted partition?

Laptop was acting really weird, and copy and seek times were really slow, so I decided to scan the hard drive surface. I have a couple hundr...