/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.lody.virtual.server.pm.installer;
import android.annotation.TargetApi;
import android.content.pm.PackageInstaller;
import android.os.Build;
/**
* Constants used internally between the PackageManager
* and media container service transports.
* Some utility methods to invoke MountService api.
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class PackageHelper {
/**
* Installation return code: this is passed to the
* IPackageInstallObserver on success.
*
* @hide
*/
public static final int INSTALL_SUCCEEDED = 1;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the package is already installed.
*
* @hide
*/
public static final int INSTALL_FAILED_ALREADY_EXISTS = -1;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the package archive file is invalid.
*
* @hide
*/
public static final int INSTALL_FAILED_INVALID_APK = -2;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the URI passed in is invalid.
*
* @hide
*/
public static final int INSTALL_FAILED_INVALID_URI = -3;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the package manager service found that
* the device didn't have enough storage space to install the app.
*
* @hide
*/
public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if a package is already installed with
* the same name.
*
* @hide
*/
public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the requested shared user does not
* exist.
*
* @hide
*/
public static final int INSTALL_FAILED_NO_SHARED_USER = -6;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if a previously installed package of the
* same name has a different signature than the new package (and the old
* package's data was not removed).
*
* @hide
*/
public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package is requested a shared
* user which is already installed on the device and does not have matching
* signature.
*
* @hide
*/
public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package uses a shared library
* that is not available.
*
* @hide
*/
public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package uses a shared library
* that is not available.
*
* @hide
*/
public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package failed while
* optimizing and validating its dex files, either because there was not
* enough storage or the validation failed.
*
* @hide
*/
public static final int INSTALL_FAILED_DEXOPT = -11;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package failed because the
* current SDK version is older than that required by the package.
*
* @hide
*/
public static final int INSTALL_FAILED_OLDER_SDK = -12;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package failed because it
* contains a content provider with the same authority as a provider already
* installed in the system.
*
* @hide
*/
public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package failed because the
* current SDK version is newer than that required by the package.
*
* @hide
*/
public static final int INSTALL_FAILED_NEWER_SDK = -14;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package failed because it has
* specified that it is a test-only package and the caller has not supplied
* the NSTALL_ALLOW_TEST flag.
*
* @hide
*/
public static final int INSTALL_FAILED_TEST_ONLY = -15;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the package being installed contains
* native code, but none that is compatible with the device's CPU_ABI.
*
* @hide
*/
public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package uses a feature that is
* not available.
*
* @hide
*/
public static final int INSTALL_FAILED_MISSING_FEATURE = -17;
// ------ Errors related to sdcard
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if a secure container mount point
* couldn't be accessed on external media.
*
* @hide
*/
public static final int INSTALL_FAILED_CONTAINER_ERROR = -18;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package couldn't be installed
* in the specified install location.
*
* @hide
*/
public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package couldn't be installed
* in the specified install location because the media is not available.
*
* @hide
*/
public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package couldn't be installed
* because the verification timed out.
*
* @hide
*/
public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package couldn't be installed
* because the verification did not succeed.
*
* @hide
*/
public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the package changed from what the
* calling program expected.
*
* @hide
*/
public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package is assigned a
* different UID than it previously held.
*
* @hide
*/
public static final int INSTALL_FAILED_UID_CHANGED = -24;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the new package has an older version
* code than the currently installed package.
*
* @hide
*/
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;
/**
* Installation return code: this is passed to the
* IPackageInstallObserver if the old package has target SDK high
* enough to support runtime permission and the new package has target SDK
* low enough to not support runtime permissions.
*
* @hide
*/
public static final int INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE = -26;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser was given a path that is
* not a file, or does not end with the expected '.apk' extension.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_NOT_APK = -100;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser was unable to retrieve the
* AndroidManifest.xml file.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser encountered an unexpected
* exception.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser did not find any
* certificates in the .apk.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser found inconsistent
* certificates on the files in the .apk.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser encountered a
* CertificateEncodingException in one of the files in the .apk.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser encountered a bad or
* missing package name in the manifest.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser encountered a bad shared
* user id name in the manifest.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser encountered some structural
* problem in the manifest.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108;
/**
* Installation parse return code: this is passed to the
* IPackageInstallObserver if the parser did not find any actionable
* tags (instrumentation or application) in the manifest.
*
* @hide
*/
public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109;
/**
* Installation failed return code: this is passed to the
* IPackageInstallObserver if the system failed to install the
* package because of system issues.
*
* @hide
*/
public static final int INSTALL_FAILED_INTERNAL_ERROR = -110;
/**
* Installation failed return code: this is passed to the
* IPackageInstallObserver if the system failed to install the
* package because the user is restricted from installing apps.
*
* @hide
*/
public static final int INSTALL_FAILED_USER_RESTRICTED = -111;
/**
* Installation failed return code: this is passed to the
* IPackageInstallObserver if the system failed to install the
* package because it is attempting to define a permission that is already
* defined by some existing package.
* <p>
* The package name of the app which has already defined the permission is
* passed to a PackageInstallObserver, if any, as the
* EXTRA_FAILURE_EXISTING_PACKAGE string extra; and the name of the
* permission being redefined is passed in the
* EXTRA_FAILURE_EXISTING_PERMISSION string extra.
*
* @hide
*/
public static final int INSTALL_FAILED_DUPLICATE_PERMISSION = -112;
/**
* Installation failed return code: this is passed to the
* IPackageInstallObserver if the system failed to install the
* package because its packaged native code did not match any of the ABIs
* supported by the system.
*
* @hide
*/
public static final int INSTALL_FAILED_NO_MATCHING_ABIS = -113;
/**
* Internal return code for NativeLibraryHelper methods to indicate that the package
* being processed did not contain any native code. This is placed here only so that
* it can belong to the same value space as the other install failure codes.
*
* @hide
*/
public static final int NO_NATIVE_LIBRARIES = -114;
/** {@hide} */
public static final int INSTALL_FAILED_ABORTED = -115;
/**
* Installation failed return code: ephemeral app installs are incompatible with some
* other installation flags supplied for the operation; or other circumstances such
* as trying to upgrade a system app via an ephemeral install.
* @hide
*/
public static final int INSTALL_FAILED_EPHEMERAL_INVALID = -116;
/**
* Return code for when package deletion succeeds. This is passed to the
* IPackageDeleteObserver if the system succeeded in deleting the
* package.
*
* @hide
*/
public static final int DELETE_SUCCEEDED = 1;
/**
* Deletion failed return code: this is passed to the
* IPackageDeleteObserver if the system failed to delete the package
* for an unspecified reason.
*
* @hide
*/
public static final int DELETE_FAILED_INTERNAL_ERROR = -1;
/**
* Deletion failed return code: this is passed to the
* IPackageDeleteObserver if the system failed to delete the package
* because it is the active DevicePolicy manager.
*
* @hide
*/
public static final int DELETE_FAILED_DEVICE_POLICY_MANAGER = -2;
/**
* Deletion failed return code: this is passed to the
* IPackageDeleteObserver if the system failed to delete the package
* since the user is restricted.
*
* @hide
*/
public static final int DELETE_FAILED_USER_RESTRICTED = -3;
/**
* Deletion failed return code: this is passed to the
* IPackageDeleteObserver if the system failed to delete the package
* because a profile or device owner has marked the package as
* uninstallable.
*
* @hide
*/
public static final int DELETE_FAILED_OWNER_BLOCKED = -4;
/** {@hide} */
public static final int DELETE_FAILED_ABORTED = -5;
/**
* Return code that is passed to the IPackageMoveObserver when the
* package has been successfully moved by the system.
*
* @hide
*/
public static final int MOVE_SUCCEEDED = -100;
/**
* Error code that is passed to the IPackageMoveObserver when the
* package hasn't been successfully moved by the system because of
* insufficient memory on specified media.
*
* @hide
*/
public static final int MOVE_FAILED_INSUFFICIENT_STORAGE = -1;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package doesn't exist.
*
* @hide
*/
public static final int MOVE_FAILED_DOESNT_EXIST = -2;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package cannot be moved since its a system package.
*
* @hide
*/
public static final int MOVE_FAILED_SYSTEM_PACKAGE = -3;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package cannot be moved since its forward locked.
*
* @hide
*/
public static final int MOVE_FAILED_FORWARD_LOCKED = -4;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package cannot be moved to the specified location.
*
* @hide
*/
public static final int MOVE_FAILED_INVALID_LOCATION = -5;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package cannot be moved to the specified location.
*
* @hide
*/
public static final int MOVE_FAILED_INTERNAL_ERROR = -6;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package already has an operation pending in the queue.
*
* @hide
*/
public static final int MOVE_FAILED_OPERATION_PENDING = -7;
/**
* Error code that is passed to the IPackageMoveObserver if the
* specified package cannot be moved since it contains a device admin.
*
* @hide
*/
public static final int MOVE_FAILED_DEVICE_ADMIN = -8;
public static String installStatusToString(int status, String msg) {
final String str = installStatusToString(status);
if (msg != null) {
return str + ": " + msg;
} else {
return str;
}
}
/** {@hide} */
public static String installStatusToString(int status) {
switch (status) {
case INSTALL_SUCCEEDED: return "INSTALL_SUCCEEDED";
case INSTALL_FAILED_ALREADY_EXISTS: return "INSTALL_FAILED_ALREADY_EXISTS";
case INSTALL_FAILED_INVALID_APK: return "INSTALL_FAILED_INVALID_APK";
case INSTALL_FAILED_INVALID_URI: return "INSTALL_FAILED_INVALID_URI";
case INSTALL_FAILED_INSUFFICIENT_STORAGE: return "INSTALL_FAILED_INSUFFICIENT_STORAGE";
case INSTALL_FAILED_DUPLICATE_PACKAGE: return "INSTALL_FAILED_DUPLICATE_PACKAGE";
case INSTALL_FAILED_NO_SHARED_USER: return "INSTALL_FAILED_NO_SHARED_USER";
case INSTALL_FAILED_UPDATE_INCOMPATIBLE: return "INSTALL_FAILED_UPDATE_INCOMPATIBLE";
case INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: return "INSTALL_FAILED_SHARED_USER_INCOMPATIBLE";
case INSTALL_FAILED_MISSING_SHARED_LIBRARY: return "INSTALL_FAILED_MISSING_SHARED_LIBRARY";
case INSTALL_FAILED_REPLACE_COULDNT_DELETE: return "INSTALL_FAILED_REPLACE_COULDNT_DELETE";
case INSTALL_FAILED_DEXOPT: return "INSTALL_FAILED_DEXOPT";
case INSTALL_FAILED_OLDER_SDK: return "INSTALL_FAILED_OLDER_SDK";
case INSTALL_FAILED_CONFLICTING_PROVIDER: return "INSTALL_FAILED_CONFLICTING_PROVIDER";
case INSTALL_FAILED_NEWER_SDK: return "INSTALL_FAILED_NEWER_SDK";
case INSTALL_FAILED_TEST_ONLY: return "INSTALL_FAILED_TEST_ONLY";
case INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: return "INSTALL_FAILED_CPU_ABI_INCOMPATIBLE";
case INSTALL_FAILED_MISSING_FEATURE: return "INSTALL_FAILED_MISSING_FEATURE";
case INSTALL_FAILED_CONTAINER_ERROR: return "INSTALL_FAILED_CONTAINER_ERROR";
case INSTALL_FAILED_INVALID_INSTALL_LOCATION: return "INSTALL_FAILED_INVALID_INSTALL_LOCATION";
case INSTALL_FAILED_MEDIA_UNAVAILABLE: return "INSTALL_FAILED_MEDIA_UNAVAILABLE";
case INSTALL_FAILED_VERIFICATION_TIMEOUT: return "INSTALL_FAILED_VERIFICATION_TIMEOUT";
case INSTALL_FAILED_VERIFICATION_FAILURE: return "INSTALL_FAILED_VERIFICATION_FAILURE";
case INSTALL_FAILED_PACKAGE_CHANGED: return "INSTALL_FAILED_PACKAGE_CHANGED";
case INSTALL_FAILED_UID_CHANGED: return "INSTALL_FAILED_UID_CHANGED";
case INSTALL_FAILED_VERSION_DOWNGRADE: return "INSTALL_FAILED_VERSION_DOWNGRADE";
case INSTALL_PARSE_FAILED_NOT_APK: return "INSTALL_PARSE_FAILED_NOT_APK";
case INSTALL_PARSE_FAILED_BAD_MANIFEST: return "INSTALL_PARSE_FAILED_BAD_MANIFEST";
case INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: return "INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION";
case INSTALL_PARSE_FAILED_NO_CERTIFICATES: return "INSTALL_PARSE_FAILED_NO_CERTIFICATES";
case INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: return "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES";
case INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING: return "INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING";
case INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME: return "INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME";
case INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID: return "INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID";
case INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: return "INSTALL_PARSE_FAILED_MANIFEST_MALFORMED";
case INSTALL_PARSE_FAILED_MANIFEST_EMPTY: return "INSTALL_PARSE_FAILED_MANIFEST_EMPTY";
case INSTALL_FAILED_INTERNAL_ERROR: return "INSTALL_FAILED_INTERNAL_ERROR";
case INSTALL_FAILED_USER_RESTRICTED: return "INSTALL_FAILED_USER_RESTRICTED";
case INSTALL_FAILED_DUPLICATE_PERMISSION: return "INSTALL_FAILED_DUPLICATE_PERMISSION";
case INSTALL_FAILED_NO_MATCHING_ABIS: return "INSTALL_FAILED_NO_MATCHING_ABIS";
case INSTALL_FAILED_ABORTED: return "INSTALL_FAILED_ABORTED";
default: return Integer.toString(status);
}
}
/** {@hide} */
public static int installStatusToPublicStatus(int status) {
switch (status) {
case INSTALL_SUCCEEDED: return PackageInstaller.STATUS_SUCCESS;
case INSTALL_FAILED_ALREADY_EXISTS: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_INVALID_APK: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_INVALID_URI: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_INSUFFICIENT_STORAGE: return PackageInstaller.STATUS_FAILURE_STORAGE;
case INSTALL_FAILED_DUPLICATE_PACKAGE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_NO_SHARED_USER: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_UPDATE_INCOMPATIBLE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_MISSING_SHARED_LIBRARY: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_REPLACE_COULDNT_DELETE: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_DEXOPT: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_OLDER_SDK: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_CONFLICTING_PROVIDER: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_NEWER_SDK: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_TEST_ONLY: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_MISSING_FEATURE: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_CONTAINER_ERROR: return PackageInstaller.STATUS_FAILURE_STORAGE;
case INSTALL_FAILED_INVALID_INSTALL_LOCATION: return PackageInstaller.STATUS_FAILURE_STORAGE;
case INSTALL_FAILED_MEDIA_UNAVAILABLE: return PackageInstaller.STATUS_FAILURE_STORAGE;
case INSTALL_FAILED_VERIFICATION_TIMEOUT: return PackageInstaller.STATUS_FAILURE_ABORTED;
case INSTALL_FAILED_VERIFICATION_FAILURE: return PackageInstaller.STATUS_FAILURE_ABORTED;
case INSTALL_FAILED_PACKAGE_CHANGED: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_UID_CHANGED: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_VERSION_DOWNGRADE: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_NOT_APK: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_BAD_MANIFEST: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_NO_CERTIFICATES: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_PARSE_FAILED_MANIFEST_EMPTY: return PackageInstaller.STATUS_FAILURE_INVALID;
case INSTALL_FAILED_INTERNAL_ERROR: return PackageInstaller.STATUS_FAILURE;
case INSTALL_FAILED_USER_RESTRICTED: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_DUPLICATE_PERMISSION: return PackageInstaller.STATUS_FAILURE_CONFLICT;
case INSTALL_FAILED_NO_MATCHING_ABIS: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
case INSTALL_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED;
default: return PackageInstaller.STATUS_FAILURE;
}
}
public static String deleteStatusToString(boolean status) {
return status ? "DELETE_SUCCEEDED" : "DELETE_FAILED";
}
}