diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/IMountService.aidl | 5 | ||||
| -rw-r--r-- | core/java/android/os/Power.java | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/core/java/android/os/IMountService.aidl b/core/java/android/os/IMountService.aidl index 96d44b6..4491a8a 100644 --- a/core/java/android/os/IMountService.aidl +++ b/core/java/android/os/IMountService.aidl @@ -75,4 +75,9 @@ interface IMountService * when a UMS host is detected. */ void setAutoStartUms(boolean value); + + /** + * Shuts down the MountService and gracefully unmounts all external media. + */ + void shutdown(); } diff --git a/core/java/android/os/Power.java b/core/java/android/os/Power.java index 3679e47..bc76180 100644 --- a/core/java/android/os/Power.java +++ b/core/java/android/os/Power.java @@ -17,6 +17,8 @@ package android.os; import java.io.IOException; +import android.os.ServiceManager; +import android.os.IMountService; /** * Class that provides access to some of the power management functions. @@ -97,5 +99,19 @@ public class Power * @throws IOException if reboot fails for some reason (eg, lack of * permission) */ - public static native void reboot(String reason) throws IOException; + public static void reboot(String reason) throws IOException + { + IMountService mSvc = IMountService.Stub.asInterface( + ServiceManager.getService("mount")); + + if (mSvc != null) { + try { + mSvc.shutdown(); + } catch (Exception e) { + } + } + rebootNative(reason); + } + + private static native void rebootNative(String reason) throws IOException ; } |
