MCPcopy Create free account
hub / github.com/baldurk/renderdoc / GetDefaultActivityForPackage

Function GetDefaultActivityForPackage

renderdoc/android/android.cpp:79–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77}
78
79rdcstr GetDefaultActivityForPackage(const rdcstr &deviceID, const rdcstr &packageName)
80{
81 Process::ProcessResult activity =
82 adbExecCommand(deviceID, StringFormat::Fmt("shell cmd package resolve-activity"
83 " -c android.intent.category.LAUNCHER %s",
84 packageName.c_str()));
85
86 if(activity.strStdout.empty())
87 {
88 RDCERR("Failed to resolve default activity of APK. STDERR: %s", activity.strStderror.c_str());
89 return "";
90 }
91
92 rdcarray<rdcstr> lines;
93 split(activity.strStdout, lines, '\n');
94
95 for(rdcstr &line : lines)
96 {
97 line.trim();
98
99 if(line.beginsWith("name=") && !line.contains("com.android"))
100 {
101 return line.substr(5);
102 }
103 }
104
105 // when failed to find default activiy with cmd package on Android 6.0
106 // try using pm dump like in this example:
107 // $ adb shell pm dump com.android.gles3jni
108 // DUMP OF SERVICE package:
109 // Activity Resolver Table:
110 // Non-Data Actions:
111 // android.intent.action.MAIN:
112 // d97b36a com.android.gles3jni/.GLES3JNIActivity filter fa39fb9
113 // ...
114
115 activity = adbExecCommand(deviceID, StringFormat::Fmt("shell pm dump %s", packageName.c_str()));
116
117 lines.clear();
118 split(activity.strStdout, lines, '\n');
119
120 size_t numOfLines = lines.size();
121 const char *intentFilter = "android.intent.action.MAIN:";
122
123 for(size_t idx = 0; idx < numOfLines; idx++)
124 {
125 lines[idx].trim();
126
127 if(lines[idx].beginsWith(intentFilter) && idx + 1 < numOfLines)
128 {
129 rdcstr activityName = lines[idx + 1].trimmed();
130 int startPos = activityName.find('/');
131 if(startPos < 0)
132 {
133 RDCWARN("Failed to find default activity");
134 return "";
135 }
136 int endPos = activityName.find(' ', startPos + 1);

Callers 1

ExecuteAndInjectMethod · 0.85

Calls 14

adbExecCommandFunction · 0.85
FmtFunction · 0.85
splitFunction · 0.85
trimmedMethod · 0.80
c_strMethod · 0.45
emptyMethod · 0.45
trimMethod · 0.45
beginsWithMethod · 0.45
containsMethod · 0.45
substrMethod · 0.45
clearMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected