From e75940711b54f3eac6aa960fd5251bcb5b6a3be0 Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Tue, 29 Nov 2016 06:18:01 +0100 Subject: [PATCH] Always start new applications on the freeform stack --- android/service/android_api_skeleton.cpp | 8 ++++++-- src/anbox/bridge/android_api_stub.cpp | 3 ++- src/anbox/cmds/launch.cpp | 4 ++-- src/anbox/dbus/skeleton/application_manager.cpp | 4 ---- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/android/service/android_api_skeleton.cpp b/android/service/android_api_skeleton.cpp index f692721..63d2f6b 100644 --- a/android/service/android_api_skeleton.cpp +++ b/android/service/android_api_skeleton.cpp @@ -83,12 +83,16 @@ void AndroidApiSkeleton::launch_application(anbox::protobuf::bridge::LaunchAppli (void) response; std::string intent = request->package_name(); - intent += "/"; - intent += request->activity(); + if (request->has_activity()) { + intent += "/"; + intent += request->activity(); + } std::vector argv = { "/system/bin/am", "start", + // Launch any applications always in freeform stack + "--stack", "2", intent, }; diff --git a/src/anbox/bridge/android_api_stub.cpp b/src/anbox/bridge/android_api_stub.cpp index 92c4370..a4a9f46 100644 --- a/src/anbox/bridge/android_api_stub.cpp +++ b/src/anbox/bridge/android_api_stub.cpp @@ -92,7 +92,8 @@ void AndroidApiStub::launch(const std::string &package, const std::string &activ auto c = std::make_shared>(); protobuf::bridge::LaunchApplication message; message.set_package_name(package); - message.set_activity(activity); + if (activity.length() > 0) + message.set_activity(activity); { std::lock_guard lock(mutex_); diff --git a/src/anbox/cmds/launch.cpp b/src/anbox/cmds/launch.cpp index 90483ba..809926e 100644 --- a/src/anbox/cmds/launch.cpp +++ b/src/anbox/cmds/launch.cpp @@ -30,8 +30,8 @@ anbox::cmds::Launch::Launch() flag(cli::make_flag(cli::Name{"package"}, cli::Description{"Package the application is part of"}, package_)); flag(cli::make_flag(cli::Name{"activity"}, cli::Description{"Activity of the application to start"}, activity_)); action([this](const cli::Command::Context&) { - if (package_.empty() || activity_.empty()) - BOOST_THROW_EXCEPTION(std::runtime_error("No package or activity specified")); + if (package_.empty() && activity_.empty()) + BOOST_THROW_EXCEPTION(std::runtime_error("Package or activity name not specified")); auto bus = std::make_shared(core::dbus::WellKnownBus::session); bus->install_executor(core::dbus::asio::make_executor(bus)); diff --git a/src/anbox/dbus/skeleton/application_manager.cpp b/src/anbox/dbus/skeleton/application_manager.cpp index a5ae6f9..04f0d26 100644 --- a/src/anbox/dbus/skeleton/application_manager.cpp +++ b/src/anbox/dbus/skeleton/application_manager.cpp @@ -35,8 +35,6 @@ ApplicationManager::ApplicationManager(const core::dbus::Bus::Ptr &bus, auto reader = msg->reader(); reader >> path; - DEBUG("path %s", path); - core::dbus::Message::Ptr reply; try { @@ -52,8 +50,6 @@ ApplicationManager::ApplicationManager(const core::dbus::Bus::Ptr &bus, err.what()); } - DEBUG("Sending reply"); - bus_->send(reply); });