ADV Manager: prevent deletion of running AVDs
Bug: 2364918
Change-Id: Ibe01e0b2d51f6d7df1972f57ff7fadb6116175df
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java
index 0713e74..986d760 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java
@@ -308,6 +308,14 @@
}
/**
+ * Returns whether an emulator is currently running the AVD.
+ */
+ public boolean isRunning() {
+ File f = new File(mPath, "userdata-qemu.img.lock");
+ return f.isFile();
+ }
+
+ /**
* Compares this object with the specified object for order. Returns a
* negative integer, zero, or a positive integer as this object is less
* than, equal to, or greater than the specified object.
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java
index c302cd6..b97d8fb 100644
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java
@@ -837,6 +837,21 @@
// get the current Display
final Display display = mTable.getDisplay();
+ // check if the AVD is running
+ if (avdInfo.isRunning()) {
+ display.asyncExec(new Runnable() {
+ public void run() {
+ Shell shell = display.getActiveShell();
+ MessageDialog.openError(shell,
+ "Delete Android Virtual Device",
+ String.format(
+ "The Android Virtual Device '%1$s' is currently running in an emulator and cannot be deleted.",
+ avdInfo.getName()));
+ }
+ });
+ return;
+ }
+
// Confirm you want to delete this AVD
final boolean[] result = new boolean[1];
display.syncExec(new Runnable() {