From dfb04af94b6b4098d8d5006dd1bbca0ecf69e273 Mon Sep 17 00:00:00 2001 From: Samuel Carlsson Date: Wed, 27 Apr 2016 21:56:12 +0200 Subject: [PATCH] Adding package manager --- src/se/vidstige/jadb/managers/Package.java | 21 ++++++++++ .../jadb/managers/PackageManager.java | 40 +++++++++++++++++++ .../jadb/test/PackageMangerTests.java | 40 +++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 src/se/vidstige/jadb/managers/Package.java create mode 100644 src/se/vidstige/jadb/managers/PackageManager.java create mode 100644 test/se/vidstige/jadb/test/PackageMangerTests.java diff --git a/src/se/vidstige/jadb/managers/Package.java b/src/se/vidstige/jadb/managers/Package.java new file mode 100644 index 0000000..bcfb751 --- /dev/null +++ b/src/se/vidstige/jadb/managers/Package.java @@ -0,0 +1,21 @@ +package se.vidstige.jadb.managers; + +/** + * Android package + */ +public class Package { + private final String name; + + public Package(String name) { + this.name = name; + } + + @Override + public String toString() { return name; } + + @Override + public boolean equals(Object o) { return name.equals(o); } + + @Override + public int hashCode() { return name.hashCode(); } +} diff --git a/src/se/vidstige/jadb/managers/PackageManager.java b/src/se/vidstige/jadb/managers/PackageManager.java new file mode 100644 index 0000000..905a9bb --- /dev/null +++ b/src/se/vidstige/jadb/managers/PackageManager.java @@ -0,0 +1,40 @@ +package se.vidstige.jadb.managers; + +import se.vidstige.jadb.JadbDevice; +import se.vidstige.jadb.JadbException; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +/** + * Java interface to package manager. Launches package manager through jadb + */ +public class PackageManager { + private final JadbDevice device; + + public PackageManager(JadbDevice device) { + this.device = device; + } + + public List getPackages() throws IOException, JadbException { + ArrayList result = new ArrayList(); + BufferedReader input = null; + try { + input = new BufferedReader(new InputStreamReader(device.executeShell("pm", "list", "packages"), Charset.forName("UTF-8"))); + String line; + while ((line = input.readLine()) != null) { + final String prefix = "package:"; + if (line.startsWith(prefix)) { + result.add(new Package(line.substring(prefix.length()))); + } + } + } finally { + if (input != null) input.close(); + } + return result; + } +} diff --git a/test/se/vidstige/jadb/test/PackageMangerTests.java b/test/se/vidstige/jadb/test/PackageMangerTests.java new file mode 100644 index 0000000..d47e417 --- /dev/null +++ b/test/se/vidstige/jadb/test/PackageMangerTests.java @@ -0,0 +1,40 @@ +package se.vidstige.jadb.test; + +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import se.vidstige.jadb.JadbConnection; +import se.vidstige.jadb.managers.Package; +import se.vidstige.jadb.managers.PackageManager; + +import java.io.IOException; +import java.util.List; + +public class PackageMangerTests { + private static JadbConnection jadb; + private PackageManager pm; + + @BeforeClass + public static void connect() throws IOException { + try { + jadb = new JadbConnection(); + jadb.getHostVersion(); + } catch (Exception e) { + org.junit.Assume.assumeNoException(e); + } + } + + @Before + public void createPackageManager() + { + pm = new PackageManager(jadb.getAnyDevice()); + } + + @Test + public void testListPackages() throws Exception { + List packages = pm.getPackages(); + for (Package p : packages) { + System.out.println(p); + } + } +}