- if os.path.exists(tools.config.session_defaults["config_path"]):
- session_cfg = tools.config.load_session()
- if session_cfg["session"]["state"] == "RUNNING":
- tmp_dir = session_cfg["session"]["waydroid_data"] + "/waydroid_tmp"
- if not os.path.exists(tmp_dir):
- os.makedirs(tmp_dir)
-
- shutil.copyfile(args.PACKAGE, tmp_dir + "/base.apk")
- platformService = IPlatform.get_service(args)
- if platformService:
- platformService.installApp("/data/waydroid_tmp/base.apk")
- shutil.rmtree(tmp_dir)
- else:
- logging.error("WayDroid container is {}".format(
- session_cfg["session"]["state"]))
- else:
+ try:
+ tools.helpers.ipc.DBusSessionService()
+
+ cm = tools.helpers.ipc.DBusContainerService()
+ session = cm.GetSession()
+ if session["state"] == "FROZEN":
+ cm.Unfreeze()
+
+ tmp_dir = tools.config.session_defaults["waydroid_data"] + "/waydroid_tmp"
+ if not os.path.exists(tmp_dir):
+ os.makedirs(tmp_dir)
+
+ shutil.copyfile(args.PACKAGE, tmp_dir + "/base.apk")
+ platformService = IPlatform.get_service(args)
+ if platformService:
+ platformService.installApp("/data/waydroid_tmp/base.apk")
+ os.remove(tmp_dir + "/base.apk")
+
+ if session["state"] == "FROZEN":
+ cm.Freeze()
+ except (dbus.DBusException, KeyError):