mirror of
https://github.com/Genymobile/scrcpy.git
synced 2025-12-17 05:24:19 +01:00
Add option to force-stop app before starting
The previous commit introduced:
scrcpy --start-app=name
By adding a '+' prefix, the app is stopped beforehand:
scrcpy --start-app=+name
This may be useful to start a fresh app on a new virtual display:
scrcpy --new-display --start-app=+org.mozilla.firefox
PR #5370 <https://github.com/Genymobile/scrcpy/pull/5370>
This commit is contained in:
@@ -594,6 +594,11 @@ public class Controller implements AsyncProcessor, VirtualDisplayListener {
|
||||
}
|
||||
|
||||
private void startApp(String name) {
|
||||
boolean forceStopBeforeStart = name.startsWith("+");
|
||||
if (forceStopBeforeStart) {
|
||||
name = name.substring(1);
|
||||
}
|
||||
|
||||
DeviceApp app = Device.findByPackageName(name);
|
||||
if (app == null) {
|
||||
Ln.w("No app found for package \"" + name + "\"");
|
||||
@@ -607,7 +612,7 @@ public class Controller implements AsyncProcessor, VirtualDisplayListener {
|
||||
}
|
||||
|
||||
Ln.i("Starting app \"" + app.getName() + "\" [" + app.getPackageName() + "] on display " + startAppDisplayId + "...");
|
||||
Device.startApp(app.getPackageName(), startAppDisplayId);
|
||||
Device.startApp(app.getPackageName(), startAppDisplayId, forceStopBeforeStart);
|
||||
}
|
||||
|
||||
private int getStartAppDisplayId() {
|
||||
|
||||
@@ -264,7 +264,7 @@ public final class Device {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void startApp(String packageName, int displayId) {
|
||||
public static void startApp(String packageName, int displayId, boolean forceStop) {
|
||||
PackageManager pm = FakeContext.get().getPackageManager();
|
||||
|
||||
Intent launchIntent = getLaunchIntent(pm, packageName);
|
||||
@@ -283,6 +283,9 @@ public final class Device {
|
||||
}
|
||||
|
||||
ActivityManager am = ServiceManager.getActivityManager();
|
||||
if (forceStop) {
|
||||
am.forceStopPackage(packageName);
|
||||
}
|
||||
am.startActivity(launchIntent, options);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user