diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index 0f3ed19e091c6..2d244a9b469d7 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -354,6 +354,26 @@ public class Binder implements IBinder { return getCallingUid(); } + /** + * Return the Linux UID assigned to the process that sent the transaction + * currently being processed. + * + * Logs WTF if the current thread is not currently + * executing an incoming transaction and the calling identity has not been + * explicitly set with {@link #clearCallingIdentity()} + * + * @hide + */ + public static final int getCallingUidOrWtf() { + if (!isDirectlyHandlingTransaction() && !hasExplicitIdentity()) { + Log.wtf(TAG, + "Thread is not in a binder transaction, " + + "and the calling identity has not been " + + "explicitly set with clearCallingIdentity"); + } + return getCallingUid(); + } + /** * Return the UserHandle assigned to the process that sent you the * current transaction that is being processed. This is the user