From 639ecdb633e3f28001ac773cddb4f8a075f68192 Mon Sep 17 00:00:00 2001 From: fashioncj Date: Thu, 5 May 2016 21:36:42 +0800 Subject: [PATCH 1/4] add forceInstall for application already exist add a way to remove installed apk --- src/se/vidstige/jadb/managers/PackageManager.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/se/vidstige/jadb/managers/PackageManager.java b/src/se/vidstige/jadb/managers/PackageManager.java index db1e7ba..3ab740c 100644 --- a/src/se/vidstige/jadb/managers/PackageManager.java +++ b/src/se/vidstige/jadb/managers/PackageManager.java @@ -55,6 +55,17 @@ public class PackageManager { verifyOperation("install", apkFile.getName(), result); } + public void forceInstall(File apkFile) throws IOException, JadbException { + RemoteFile remote = new RemoteFile("/sdcard/tmp/" + apkFile.getName()); + device.push(apkFile, remote); + InputStream s = device.executeShell("pm", "install","-r", 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")); From c52447e0989f4bcdd7487dbc7a30fcbffc8809f5 Mon Sep 17 00:00:00 2001 From: fashioncj Date: Sun, 8 May 2016 14:38:01 +0800 Subject: [PATCH 2/4] add forceInstall for application already exist add a way to remove installed apk fix issue --- .../jadb/managers/PackageManager.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/se/vidstige/jadb/managers/PackageManager.java b/src/se/vidstige/jadb/managers/PackageManager.java index 3ab740c..2e4cedc 100644 --- a/src/se/vidstige/jadb/managers/PackageManager.java +++ b/src/se/vidstige/jadb/managers/PackageManager.java @@ -46,26 +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 - verifyOperation("install", apkFile.getName(), result); - } - - public void forceInstall(File apkFile) throws IOException, JadbException { - RemoteFile remote = new RemoteFile("/sdcard/tmp/" + apkFile.getName()); - device.push(apkFile, remote); - InputStream s = device.executeShell("pm", "install","-r", 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")); From 71388516fe641f9946baed2983dfaea4b5d454c1 Mon Sep 17 00:00:00 2001 From: fashioncj Date: Sun, 8 May 2016 14:43:53 +0800 Subject: [PATCH 3/4] fix whitespace --- src/se/vidstige/jadb/managers/PackageManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/se/vidstige/jadb/managers/PackageManager.java b/src/se/vidstige/jadb/managers/PackageManager.java index 2e4cedc..47f249a 100644 --- a/src/se/vidstige/jadb/managers/PackageManager.java +++ b/src/se/vidstige/jadb/managers/PackageManager.java @@ -56,7 +56,7 @@ public class PackageManager { s= device.executeShell("pm", "install", Bash.quote(remote.getPath())); } String result = Stream.readAll(s, Charset.forName("UTF-8")); - s=device.executeShell("rm", "-f",Bash.quote(remote.getPath())); + s=device.executeShell("rm", "-f", Bash.quote(remote.getPath())); Stream.readAll(s, Charset.forName("UTF-8")); verifyOperation("install", apkFile.getName(), result); } From 96f2b1fa053e7bc70d2530565cdd82a7febe347c Mon Sep 17 00:00:00 2001 From: fashioncj Date: Sun, 8 May 2016 14:50:39 +0800 Subject: [PATCH 4/4] fix test --- test/se/vidstige/jadb/test/PackageMangerTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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")); } }