diff --git a/src/se/vidstige/jadb/managers/PackageManager.java b/src/se/vidstige/jadb/managers/PackageManager.java index db1e7ba..47f249a 100644 --- a/src/se/vidstige/jadb/managers/PackageManager.java +++ b/src/se/vidstige/jadb/managers/PackageManager.java @@ -46,15 +46,22 @@ public class PackageManager { if (!result.contains("Success")) throw new JadbException(getErrorMessage(operation, target, result)); } - public void install(File apkFile) throws IOException, JadbException { + public void install(File apkFile,boolean forceInstall) throws IOException, JadbException { RemoteFile remote = new RemoteFile("/sdcard/tmp/" + apkFile.getName()); device.push(apkFile, remote); - InputStream s = device.executeShell("pm", "install", Bash.quote(remote.getPath())); + InputStream s; + if(forceInstall){ + s= device.executeShell("pm", "install", "-r", Bash.quote(remote.getPath())); + }else{ + s= device.executeShell("pm", "install", Bash.quote(remote.getPath())); + } String result = Stream.readAll(s, Charset.forName("UTF-8")); - // TODO: Remove remote file + s=device.executeShell("rm", "-f", Bash.quote(remote.getPath())); + Stream.readAll(s, Charset.forName("UTF-8")); verifyOperation("install", apkFile.getName(), result); } + public void uninstall(Package name) throws IOException, JadbException { InputStream s = device.executeShell("pm", "uninstall", name.toString()); String result = Stream.readAll(s, Charset.forName("UTF-8")); diff --git a/test/se/vidstige/jadb/test/PackageMangerTests.java b/test/se/vidstige/jadb/test/PackageMangerTests.java index 298d528..f742ecb 100644 --- a/test/se/vidstige/jadb/test/PackageMangerTests.java +++ b/test/se/vidstige/jadb/test/PackageMangerTests.java @@ -47,7 +47,7 @@ public class PackageMangerTests { @Test public void testInstallUninstallCycle() throws Exception { File f = new File("test/data/Tiniest Smallest APK ever_v' platformBuildVersionName=_apkpure.com.apk"); - pm.install(f); + pm.install(f, false); pm.uninstall(new Package("b.a")); } }