mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 08:40:55 +00:00
Get default Activity on Android 6.0
"cmd package resolve-activity" is only available from Android 7.0. Pre Android 7.0 we can use "pm dump <packagename>" to get the default Activity name.
This commit is contained in:
committed by
Baldur Karlsson
parent
e7dec9e5ae
commit
f84eb1f180
@@ -85,6 +85,46 @@ std::string GetDefaultActivityForPackage(const std::string &deviceID, const std:
|
||||
}
|
||||
}
|
||||
|
||||
// when failed to find default activiy with cmd package on Android 6.0
|
||||
// try using pm dump like in this example:
|
||||
// $ adb shell pm dump com.android.gles3jni
|
||||
// DUMP OF SERVICE package:
|
||||
// Activity Resolver Table:
|
||||
// Non-Data Actions:
|
||||
// android.intent.action.MAIN:
|
||||
// d97b36a com.android.gles3jni/.GLES3JNIActivity filter fa39fb9
|
||||
// ...
|
||||
|
||||
activity = adbExecCommand(deviceID, StringFormat::Fmt("shell pm dump %s", packageName.c_str()));
|
||||
|
||||
lines.clear();
|
||||
split(activity.strStdout, lines, '\n');
|
||||
|
||||
size_t numOfLines = lines.size();
|
||||
const char *intentFilter = "android.intent.action.MAIN:";
|
||||
size_t intentFilterSize = strlen(intentFilter);
|
||||
|
||||
for(size_t idx = 0; idx < numOfLines; idx++)
|
||||
{
|
||||
std::string line = trim(lines[idx]);
|
||||
if(!strncmp(line.c_str(), intentFilter, intentFilterSize) && idx + 1 < numOfLines)
|
||||
{
|
||||
std::string activityName = trim(lines[idx + 1]);
|
||||
size_t startPos = activityName.find("/");
|
||||
if(startPos == std::string::npos)
|
||||
{
|
||||
RDCWARN("Failed to find default activity");
|
||||
return "";
|
||||
}
|
||||
size_t endPos = activityName.find(" ", startPos + 1);
|
||||
if(endPos == std::string::npos)
|
||||
{
|
||||
endPos = activityName.length();
|
||||
}
|
||||
return activityName.substr(startPos + 1, endPos - startPos - 1);
|
||||
}
|
||||
}
|
||||
|
||||
RDCERR("Didn't find default activity in adb output");
|
||||
return "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user