Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,7 @@ LOCAL_SRC_FILES += \ core/java/android/content/pm/IPackageInstallObserver.aidl \ core/java/android/content/pm/IPackageInstallObserver2.aidl \ core/java/android/content/pm/IPackageInstaller.aidl \ core/java/android/content/pm/IPackageInstallerObserver.aidl \ core/java/android/content/pm/IPackageInstallerSession.aidl \ core/java/android/content/pm/IPackageManager.aidl \ core/java/android/content/pm/IPackageMoveObserver.aidl \ Loading cmds/pm/src/com/android/commands/pm/Pm.java +36 −10 Original line number Diff line number Diff line Loading @@ -27,10 +27,11 @@ import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageDeleteObserver; import android.content.pm.IPackageInstaller; import android.content.pm.IPackageManager; import android.content.pm.InstallSessionParams; import android.content.pm.InstrumentationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstallerParams; import android.content.pm.PackageInstaller.InstallResultCallback; import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; Loading Loading @@ -768,6 +769,31 @@ public final class Pm { } } class LocalInstallResultCallback extends InstallResultCallback { boolean finished; boolean success; String msg; private void setResult(boolean success, String msg) { synchronized (this) { this.finished = true; this.success = success; this.msg = msg; notifyAll(); } } @Override public void onSuccess() { setResult(true, null); } @Override public void onFailure(String msg) { setResult(false, msg); } } /** * Converts a failure code into a string by using reflection to find a matching constant * in PackageManager. Loading Loading @@ -989,7 +1015,7 @@ public final class Pm { private void runInstallCreate() throws RemoteException { String installerPackageName = null; final PackageInstallerParams params = new PackageInstallerParams(); final InstallSessionParams params = new InstallSessionParams(); params.installFlags = PackageManager.INSTALL_ALL_USERS; params.fullInstall = true; Loading Loading @@ -1084,21 +1110,21 @@ public final class Pm { try { session = new PackageInstaller.Session(mInstaller.openSession(sessionId)); final LocalPackageInstallObserver observer = new LocalPackageInstallObserver(); session.install(observer); final LocalInstallResultCallback callback = new LocalInstallResultCallback(); session.install(callback); synchronized (observer) { while (!observer.finished) { synchronized (callback) { while (!callback.finished) { try { observer.wait(); callback.wait(); } catch (InterruptedException e) { } } if (observer.result != PackageManager.INSTALL_SUCCEEDED) { throw new IllegalStateException( "Failure [" + installFailureToString(observer) + "]"); if (!callback.success) { throw new IllegalStateException("Failure [" + callback.msg + "]"); } } System.out.println("Success"); } finally { IoUtils.closeQuietly(session); Loading core/java/android/app/PackageInstallObserver.java +8 −2 Original line number Diff line number Diff line Loading @@ -23,13 +23,14 @@ import android.os.Bundle; public class PackageInstallObserver { private final IPackageInstallObserver2.Stub mBinder = new IPackageInstallObserver2.Stub() { @Override public void packageInstalled(String basePackageName, Bundle extras, int returnCode) { public void packageInstalled(String basePackageName, Bundle extras, int returnCode, String msg) { PackageInstallObserver.this.packageInstalled(basePackageName, extras, returnCode); } }; /** {@hide} */ public IPackageInstallObserver2.Stub getBinder() { public IPackageInstallObserver2 getBinder() { return mBinder; } Loading @@ -50,4 +51,9 @@ public class PackageInstallObserver { */ public void packageInstalled(String basePackageName, Bundle extras, int returnCode) { } public void packageInstalled(String basePackageName, Bundle extras, int returnCode, String msg) { packageInstalled(basePackageName, extras, returnCode); } } core/java/android/app/PackageUninstallObserver.java +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ public class PackageUninstallObserver { }; /** {@hide} */ public IPackageDeleteObserver.Stub getBinder() { public IPackageDeleteObserver getBinder() { return mBinder; } Loading core/java/android/content/pm/IPackageInstallObserver2.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -40,5 +40,5 @@ oneway interface IPackageInstallObserver2 { * </tr> * </table> */ void packageInstalled(String basePackageName, in Bundle extras, int returnCode); void packageInstalled(String basePackageName, in Bundle extras, int returnCode, String msg); } Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,7 @@ LOCAL_SRC_FILES += \ core/java/android/content/pm/IPackageInstallObserver.aidl \ core/java/android/content/pm/IPackageInstallObserver2.aidl \ core/java/android/content/pm/IPackageInstaller.aidl \ core/java/android/content/pm/IPackageInstallerObserver.aidl \ core/java/android/content/pm/IPackageInstallerSession.aidl \ core/java/android/content/pm/IPackageManager.aidl \ core/java/android/content/pm/IPackageMoveObserver.aidl \ Loading
cmds/pm/src/com/android/commands/pm/Pm.java +36 −10 Original line number Diff line number Diff line Loading @@ -27,10 +27,11 @@ import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageDeleteObserver; import android.content.pm.IPackageInstaller; import android.content.pm.IPackageManager; import android.content.pm.InstallSessionParams; import android.content.pm.InstrumentationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstallerParams; import android.content.pm.PackageInstaller.InstallResultCallback; import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; Loading Loading @@ -768,6 +769,31 @@ public final class Pm { } } class LocalInstallResultCallback extends InstallResultCallback { boolean finished; boolean success; String msg; private void setResult(boolean success, String msg) { synchronized (this) { this.finished = true; this.success = success; this.msg = msg; notifyAll(); } } @Override public void onSuccess() { setResult(true, null); } @Override public void onFailure(String msg) { setResult(false, msg); } } /** * Converts a failure code into a string by using reflection to find a matching constant * in PackageManager. Loading Loading @@ -989,7 +1015,7 @@ public final class Pm { private void runInstallCreate() throws RemoteException { String installerPackageName = null; final PackageInstallerParams params = new PackageInstallerParams(); final InstallSessionParams params = new InstallSessionParams(); params.installFlags = PackageManager.INSTALL_ALL_USERS; params.fullInstall = true; Loading Loading @@ -1084,21 +1110,21 @@ public final class Pm { try { session = new PackageInstaller.Session(mInstaller.openSession(sessionId)); final LocalPackageInstallObserver observer = new LocalPackageInstallObserver(); session.install(observer); final LocalInstallResultCallback callback = new LocalInstallResultCallback(); session.install(callback); synchronized (observer) { while (!observer.finished) { synchronized (callback) { while (!callback.finished) { try { observer.wait(); callback.wait(); } catch (InterruptedException e) { } } if (observer.result != PackageManager.INSTALL_SUCCEEDED) { throw new IllegalStateException( "Failure [" + installFailureToString(observer) + "]"); if (!callback.success) { throw new IllegalStateException("Failure [" + callback.msg + "]"); } } System.out.println("Success"); } finally { IoUtils.closeQuietly(session); Loading
core/java/android/app/PackageInstallObserver.java +8 −2 Original line number Diff line number Diff line Loading @@ -23,13 +23,14 @@ import android.os.Bundle; public class PackageInstallObserver { private final IPackageInstallObserver2.Stub mBinder = new IPackageInstallObserver2.Stub() { @Override public void packageInstalled(String basePackageName, Bundle extras, int returnCode) { public void packageInstalled(String basePackageName, Bundle extras, int returnCode, String msg) { PackageInstallObserver.this.packageInstalled(basePackageName, extras, returnCode); } }; /** {@hide} */ public IPackageInstallObserver2.Stub getBinder() { public IPackageInstallObserver2 getBinder() { return mBinder; } Loading @@ -50,4 +51,9 @@ public class PackageInstallObserver { */ public void packageInstalled(String basePackageName, Bundle extras, int returnCode) { } public void packageInstalled(String basePackageName, Bundle extras, int returnCode, String msg) { packageInstalled(basePackageName, extras, returnCode); } }
core/java/android/app/PackageUninstallObserver.java +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ public class PackageUninstallObserver { }; /** {@hide} */ public IPackageDeleteObserver.Stub getBinder() { public IPackageDeleteObserver getBinder() { return mBinder; } Loading
core/java/android/content/pm/IPackageInstallObserver2.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -40,5 +40,5 @@ oneway interface IPackageInstallObserver2 { * </tr> * </table> */ void packageInstalled(String basePackageName, in Bundle extras, int returnCode); void packageInstalled(String basePackageName, in Bundle extras, int returnCode, String msg); }