diff --git a/metalava/src/main/java/com/android/tools/metalava/AndroidApiChecks.kt b/metalava/src/main/java/com/android/tools/metalava/AndroidApiChecks.kt
index 552fc8e..70925b4 100644
--- a/metalava/src/main/java/com/android/tools/metalava/AndroidApiChecks.kt
+++ b/metalava/src/main/java/com/android/tools/metalava/AndroidApiChecks.kt
@@ -212,9 +212,10 @@
                 }
             }
             for (item in permissions) {
-                var perm = item
-                if (perm.indexOf('.') >= 0) perm = perm.substring(perm.lastIndexOf('.') + 1)
-                val mentioned = text.contains(perm)
+                val perm = item.substringAfterLast('.')
+                // Search for the permission name as a whole word.
+                val regex = Regex("""\b\Q$perm\E\b""")
+                val mentioned = text.contains(regex)
                 if (mentioned && !conditional) {
                     reporter.report(
                         Issues.REQUIRES_PERMISSION,
diff --git a/metalava/src/test/java/com/android/tools/metalava/AndroidApiChecksTest.kt b/metalava/src/test/java/com/android/tools/metalava/AndroidApiChecksTest.kt
index 3fab285..ff1d791 100644
--- a/metalava/src/test/java/com/android/tools/metalava/AndroidApiChecksTest.kt
+++ b/metalava/src/test/java/com/android/tools/metalava/AndroidApiChecksTest.kt
@@ -149,6 +149,55 @@
     }
 
     @Test
+    fun `Document Permissions ignore when permission is subset of a word`() {
+        check(
+            sourceFiles =
+                arrayOf(
+                    java(
+                        """
+                            package android;
+
+                            public abstract class Manifest {
+                                public static final class permission {
+                                    public static final String PERMISSION = "android.permission.PERMISSION";
+                                }
+                            }
+                        """
+                    ),
+                    requiresPermissionSource,
+                    java(
+                        """
+                            package android.pkg;
+
+                            import android.Manifest;
+                            import android.annotation.RequiresPermission;
+
+                            public class PermissionTest {
+                                /**
+                                 * While this contains the name of the permission it is not actually
+                                 * referring to the permission ARG_PERMISSION.
+                                 */
+                                @RequiresPermission(Manifest.permission.PERMISSION)
+                                public void test0() {
+                                }
+
+                                /**
+                                 * While this contains the name of the permission it is not actually
+                                 * referring to the permission PERMISSION_ARG.
+                                 */
+                                @RequiresPermission(Manifest.permission.PERMISSION)
+                                public void test0() {
+                                }
+                            }
+                        """
+                    ),
+                ),
+            extraArguments =
+                arrayOf(ARG_WARNING, Issues.CONDITIONAL_REQUIRES_PERMISSION_NOT_EXPLAINED.name),
+        )
+    }
+
+    @Test
     fun `Document Intent Actions`() {
         check(
             expectedFail = DefaultLintErrorMessage,
