Add get apk version via adb

PiperOrigin-RevId: 595930239
diff --git a/ui_automator/android_device.py b/ui_automator/android_device.py
index c517377..86d0375 100644
--- a/ui_automator/android_device.py
+++ b/ui_automator/android_device.py
@@ -64,10 +64,28 @@
   Raises:
     adb.AdbError: When executing adb command fails.
   """
+  installed_version = get_apk_version(device, package_name)
+
+  return installed_version == version
+
+
+def get_apk_version(
+    device: android_device.AndroidDevice, package_name: str
+) -> str | None:
+  """Gets Android app version on given Android device.
+
+  Args:
+    device: An AndroidDevice object.
+    package_name: The Android app package name.
+
+  Returns:
+    The version of given package.
+
+  Raises:
+    adb.AdbError: When executing adb command fails.
+  """
   grep_version_name = utils.grep(
       'versionName', device.adb.shell(['dumpsys', 'package', package_name])
   )
 
-  return (
-      bool(grep_version_name) and grep_version_name[0].split('=')[1] == version
-  )
+  return grep_version_name[0].split('=')[1] if grep_version_name else None
diff --git a/ui_automator/android_device_test.py b/ui_automator/android_device_test.py
index 595f680..c7099ea 100644
--- a/ui_automator/android_device_test.py
+++ b/ui_automator/android_device_test.py
@@ -98,6 +98,22 @@
         )
     )
 
+  def test_get_apk_version_returns_version(self):
+    self.mock_android_device.adb.shell.return_value = b'versionName=1.2.4\n'
+
+    self.assertEqual(
+        ad.get_apk_version(self.mock_android_device, 'installed.apk'), '1.2.4'
+    )
+
+  def test_get_apk_version_returns_none_with_not_installed_apk(self):
+    self.mock_android_device.adb.shell.return_value = (
+        b'Unable to find package\n'
+    )
+
+    self.assertIsNone(
+        ad.get_apk_version(self.mock_android_device, 'notinstalled.apk')
+    )
+
 
 if __name__ == '__main__':
   unittest.main()