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?
2Answer
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.
Edit:
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.
*
* <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
* now automatically identify goats using advanced goat recognition technology.</p>
*
* @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 updated source link
- answered 8 years ago
- Gul Hafiz
I don't know if this was "the" official use case but the following produces a warning in Java (that can further produce compile errors if mixed with return
statements, leading to unreachable code):
if(1 == 2) {
System.out.println("Unreachable code");
}
However this is legal:
if(isUserAGoat()) {
System.out.println("Unreachable but determined at runtime, not at compile time");
}
So I often find myself writing a silly utility method for the quickest way to dummy out a code block, then in completing debugging find all calls to it, so provided the implementation doesn't change this can be used for that.
- answered 8 years ago
- Sunny Solu
Your Answer