Search in sources :

Example 6 with SizedInputStream

use of com.android.internal.util.SizedInputStream in project android_frameworks_base by crdroidandroid.

the class PackageManagerShellCommand method doWriteSplit.

private int doWriteSplit(int sessionId, String inPath, long sizeBytes, String splitName, boolean logSuccess) throws RemoteException {
    final PrintWriter pw = getOutPrintWriter();
    if (sizeBytes <= 0) {
        pw.println("Error: must specify a APK size");
        return 1;
    }
    if (inPath != null && !"-".equals(inPath)) {
        pw.println("Error: APK content must be streamed");
        return 1;
    }
    inPath = null;
    final SessionInfo info = mInterface.getPackageInstaller().getSessionInfo(sessionId);
    PackageInstaller.Session session = null;
    InputStream in = null;
    OutputStream out = null;
    try {
        session = new PackageInstaller.Session(mInterface.getPackageInstaller().openSession(sessionId));
        if (inPath != null) {
            in = new FileInputStream(inPath);
        } else {
            in = new SizedInputStream(getRawInputStream(), sizeBytes);
        }
        out = session.openWrite(splitName, 0, sizeBytes);
        int total = 0;
        byte[] buffer = new byte[65536];
        int c;
        while ((c = in.read(buffer)) != -1) {
            total += c;
            out.write(buffer, 0, c);
            if (info.sizeBytes > 0) {
                final float fraction = ((float) c / (float) info.sizeBytes);
                session.addProgress(fraction);
            }
        }
        session.fsync(out);
        if (logSuccess) {
            pw.println("Success: streamed " + total + " bytes");
        }
        return 0;
    } catch (IOException e) {
        pw.println("Error: failed to write; " + e.getMessage());
        return 1;
    } finally {
        IoUtils.closeQuietly(out);
        IoUtils.closeQuietly(in);
        IoUtils.closeQuietly(session);
    }
}
Also used : SizedInputStream(com.android.internal.util.SizedInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) SessionInfo(android.content.pm.PackageInstaller.SessionInfo) PackageInstaller(android.content.pm.PackageInstaller) SizedInputStream(com.android.internal.util.SizedInputStream) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) PrintWriter(java.io.PrintWriter)

Example 7 with SizedInputStream

use of com.android.internal.util.SizedInputStream in project platform_frameworks_base by android.

the class Pm method doWriteSession.

private int doWriteSession(int sessionId, String inPath, long sizeBytes, String splitName, boolean logSuccess) throws RemoteException {
    if ("-".equals(inPath)) {
        inPath = null;
    } else if (inPath != null) {
        final File file = new File(inPath);
        if (file.isFile()) {
            sizeBytes = file.length();
        }
    }
    final SessionInfo info = mInstaller.getSessionInfo(sessionId);
    PackageInstaller.Session session = null;
    InputStream in = null;
    OutputStream out = null;
    try {
        session = new PackageInstaller.Session(mInstaller.openSession(sessionId));
        if (inPath != null) {
            in = new FileInputStream(inPath);
        } else {
            in = new SizedInputStream(System.in, sizeBytes);
        }
        out = session.openWrite(splitName, 0, sizeBytes);
        int total = 0;
        byte[] buffer = new byte[65536];
        int c;
        while ((c = in.read(buffer)) != -1) {
            total += c;
            out.write(buffer, 0, c);
            if (info.sizeBytes > 0) {
                final float fraction = ((float) c / (float) info.sizeBytes);
                session.addProgress(fraction);
            }
        }
        session.fsync(out);
        if (logSuccess) {
            System.out.println("Success: streamed " + total + " bytes");
        }
        return PackageInstaller.STATUS_SUCCESS;
    } catch (IOException e) {
        System.err.println("Error: failed to write; " + e.getMessage());
        return PackageInstaller.STATUS_FAILURE;
    } finally {
        IoUtils.closeQuietly(out);
        IoUtils.closeQuietly(in);
        IoUtils.closeQuietly(session);
    }
}
Also used : SizedInputStream(com.android.internal.util.SizedInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) SessionInfo(android.content.pm.PackageInstaller.SessionInfo) PackageInstaller(android.content.pm.PackageInstaller) IPackageInstaller(android.content.pm.IPackageInstaller) SizedInputStream(com.android.internal.util.SizedInputStream) IOException(java.io.IOException) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 8 with SizedInputStream

use of com.android.internal.util.SizedInputStream in project android_frameworks_base by DirtyUnicorns.

the class Pm method doWriteSession.

private int doWriteSession(int sessionId, String inPath, long sizeBytes, String splitName, boolean logSuccess) throws RemoteException {
    if ("-".equals(inPath)) {
        inPath = null;
    } else if (inPath != null) {
        final File file = new File(inPath);
        if (file.isFile()) {
            sizeBytes = file.length();
        }
    }
    final SessionInfo info = mInstaller.getSessionInfo(sessionId);
    PackageInstaller.Session session = null;
    InputStream in = null;
    OutputStream out = null;
    try {
        session = new PackageInstaller.Session(mInstaller.openSession(sessionId));
        if (inPath != null) {
            in = new FileInputStream(inPath);
        } else {
            in = new SizedInputStream(System.in, sizeBytes);
        }
        out = session.openWrite(splitName, 0, sizeBytes);
        int total = 0;
        byte[] buffer = new byte[65536];
        int c;
        while ((c = in.read(buffer)) != -1) {
            total += c;
            out.write(buffer, 0, c);
            if (info.sizeBytes > 0) {
                final float fraction = ((float) c / (float) info.sizeBytes);
                session.addProgress(fraction);
            }
        }
        session.fsync(out);
        if (logSuccess) {
            System.out.println("Success: streamed " + total + " bytes");
        }
        return PackageInstaller.STATUS_SUCCESS;
    } catch (IOException e) {
        System.err.println("Error: failed to write; " + e.getMessage());
        return PackageInstaller.STATUS_FAILURE;
    } finally {
        IoUtils.closeQuietly(out);
        IoUtils.closeQuietly(in);
        IoUtils.closeQuietly(session);
    }
}
Also used : SizedInputStream(com.android.internal.util.SizedInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) SessionInfo(android.content.pm.PackageInstaller.SessionInfo) PackageInstaller(android.content.pm.PackageInstaller) IPackageInstaller(android.content.pm.IPackageInstaller) SizedInputStream(com.android.internal.util.SizedInputStream) IOException(java.io.IOException) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 9 with SizedInputStream

use of com.android.internal.util.SizedInputStream in project android_frameworks_base by crdroidandroid.

the class Pm method doWriteSession.

private int doWriteSession(int sessionId, String inPath, long sizeBytes, String splitName, boolean logSuccess) throws RemoteException {
    if ("-".equals(inPath)) {
        inPath = null;
    } else if (inPath != null) {
        final File file = new File(inPath);
        if (file.isFile()) {
            sizeBytes = file.length();
        }
    }
    final SessionInfo info = mInstaller.getSessionInfo(sessionId);
    PackageInstaller.Session session = null;
    InputStream in = null;
    OutputStream out = null;
    try {
        session = new PackageInstaller.Session(mInstaller.openSession(sessionId));
        if (inPath != null) {
            in = new FileInputStream(inPath);
        } else {
            in = new SizedInputStream(System.in, sizeBytes);
        }
        out = session.openWrite(splitName, 0, sizeBytes);
        int total = 0;
        byte[] buffer = new byte[65536];
        int c;
        while ((c = in.read(buffer)) != -1) {
            total += c;
            out.write(buffer, 0, c);
            if (info.sizeBytes > 0) {
                final float fraction = ((float) c / (float) info.sizeBytes);
                session.addProgress(fraction);
            }
        }
        session.fsync(out);
        if (logSuccess) {
            System.out.println("Success: streamed " + total + " bytes");
        }
        return PackageInstaller.STATUS_SUCCESS;
    } catch (IOException e) {
        System.err.println("Error: failed to write; " + e.getMessage());
        return PackageInstaller.STATUS_FAILURE;
    } finally {
        IoUtils.closeQuietly(out);
        IoUtils.closeQuietly(in);
        IoUtils.closeQuietly(session);
    }
}
Also used : SizedInputStream(com.android.internal.util.SizedInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) SessionInfo(android.content.pm.PackageInstaller.SessionInfo) PackageInstaller(android.content.pm.PackageInstaller) IPackageInstaller(android.content.pm.IPackageInstaller) SizedInputStream(com.android.internal.util.SizedInputStream) IOException(java.io.IOException) File(java.io.File) FileInputStream(java.io.FileInputStream)

Aggregations

PackageInstaller (android.content.pm.PackageInstaller)9 SessionInfo (android.content.pm.PackageInstaller.SessionInfo)9 SizedInputStream (com.android.internal.util.SizedInputStream)9 FileInputStream (java.io.FileInputStream)9 IOException (java.io.IOException)9 InputStream (java.io.InputStream)9 OutputStream (java.io.OutputStream)9 IPackageInstaller (android.content.pm.IPackageInstaller)5 File (java.io.File)5 PrintWriter (java.io.PrintWriter)4