Skip to content

Commit a61e79e

Browse files
committed
Add get top activity URI
1 parent 8df76de commit a61e79e

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

.idea/dictionaries/diego.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/com/dtmilano/android/adb/adbclient.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
import subprocess
2424
import threading
2525
import unicodedata
26+
from typing import Optional
2627

2728
from com.dtmilano.android.adb.dumpsys import Dumpsys
2829

29-
__version__ = '21.4.4'
30+
__version__ = '21.5.0'
3031

3132
import sys
3233
import warnings
@@ -388,7 +389,8 @@ def checkConnected(self, sock=None):
388389

389390
def checkVersion(self, ignoreversioncheck=False, reconnect=True):
390391
if DEBUG:
391-
print("checkVersion(reconnect=%s) ignoreversioncheck=%s" % (reconnect, ignoreversioncheck), file=sys.stderr)
392+
print("checkVersion(reconnect=%s) ignoreversioncheck=%s" % (reconnect, ignoreversioncheck),
393+
file=sys.stderr)
392394
self.__send('host:version', reconnect=False)
393395
# HACK: MSG_WAITALL not available on windows
394396
# version = self.socket.recv(8, socket.MSG_WAITALL)
@@ -849,7 +851,8 @@ def takeSnapshot(self, reconnect=False):
849851
if DEBUG:
850852
if version == 1:
851853
print(" takeSnapshot:", (
852-
version, bpp, size, width, height, roffset, rlen, boffset, blen, goffset, glen, aoffset, alen), file=sys.stderr)
854+
version, bpp, size, width, height, roffset, rlen, boffset, blen, goffset, glen, aoffset, alen),
855+
file=sys.stderr)
853856
elif version == 2:
854857
print(" takeSnapshot:", (
855858
version, bpp, colorspace, width, height, roffset, rlen, boffset, blen, goffset, glen, aoffset,
@@ -952,21 +955,23 @@ def __transformPointByOrientation(self, xxx_todo_changeme, orientationOrig, orie
952955

953956
def touch(self, x, y, orientation=-1, eventType=DOWN_AND_UP):
954957
if DEBUG_TOUCH:
955-
print("touch(x=", x, ", y=", y, ", orientation=", orientation, ", eventType=", eventType, ")", file=sys.stderr)
958+
print("touch(x=", x, ", y=", y, ", orientation=", orientation, ", eventType=", eventType, ")",
959+
file=sys.stderr)
956960
self.__checkTransport()
957961
if orientation == -1:
958962
orientation = self.display['orientation']
959963
version = self.getSdkVersion()
960964
if version > 10:
961965
self.shell(
962-
'input tap %d %d' % self.__transformPointByOrientation((x, y), orientation, self.display['orientation']))
966+
'input tap %d %d' % self.__transformPointByOrientation((x, y), orientation,
967+
self.display['orientation']))
963968
else:
964969
raise RuntimeError('drag: API <= 10 not supported (version=%d)' % version)
965970

966-
967971
def touchDip(self, x, y, orientation=-1, eventType=DOWN_AND_UP):
968972
if DEBUG_TOUCH:
969-
print("touchDip(x=", x, ", y=", y, ", orientation=", orientation, ", eventType=", eventType, ")", file=sys.stderr)
973+
print("touchDip(x=", x, ", y=", y, ", orientation=", orientation, ", eventType=", eventType, ")",
974+
file=sys.stderr)
970975
self.__checkTransport()
971976
if orientation == -1:
972977
orientation = self.display['orientation']
@@ -1082,7 +1087,7 @@ def isScreenOn(self):
10821087

10831088
self.__checkTransport()
10841089
window_policy = self.shell('dumpsys window policy')
1085-
1090+
10861091
# Deprecated in API 20, removed in API 29
10871092
screenOnRE = re.compile('mScreenOnFully=(true|false)')
10881093
m = screenOnRE.search(window_policy)
@@ -1118,7 +1123,7 @@ def percentSame(image1, image2):
11181123
size_x1, size_y1 = image1.size
11191124
size_x2, size_y2 = image2.size
11201125
if (size_x1 != size_x2 or
1121-
size_y1 != size_y2):
1126+
size_y1 != size_y2):
11221127
return 0
11231128

11241129
# Images are the same size
@@ -1214,7 +1219,8 @@ def initDisplayProperties(self):
12141219

12151220
def log(self, tag, message, priority='D', verbose=False):
12161221
if DEBUG_LOG:
1217-
print("log(tag=%s, message=%s, priority=%s, verbose=%s)" % (tag, message, priority, verbose), file=sys.stderr)
1222+
print("log(tag=%s, message=%s, priority=%s, verbose=%s)" % (tag, message, priority, verbose),
1223+
file=sys.stderr)
12181224
self.__checkTransport()
12191225
message = self.substituteDeviceTemplate(message)
12201226
if verbose or priority == 'V':
@@ -1389,6 +1395,20 @@ def getTopActivityName(self):
13891395
else:
13901396
return None
13911397

1398+
def getTopActivityUri(self) -> Optional[str]:
1399+
tan = self.getTopActivityName()
1400+
dat = self.shell('dumpsys activity')
1401+
startActivityRE = re.compile(r'^\s*mStartActivity:')
1402+
intentRE = re.compile(f'^\\s*Intent {{ act=(\\S+) dat=(\\S+) flg=(\\S+) cmp={tan} }}')
1403+
lines = dat.splitlines()
1404+
for n, _line in enumerate(lines):
1405+
if startActivityRE.match(_line):
1406+
for i in range(n, n + 6):
1407+
m = intentRE.match(lines[i])
1408+
if m:
1409+
return m.group(2)
1410+
return None
1411+
13921412
def substituteDeviceTemplate(self, template):
13931413
serialno = self.serialno.replace('.', '_').replace(':', '-')
13941414
window_name = self.getFocusedWindowName() or 'no_name'

0 commit comments

Comments
 (0)