下面列出了android.content.pm.PackageInstaller#STATUS_FAILURE_INCOMPATIBLE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public String getSimplifiedErrorDescription(int status, String blockingPackage) {
switch (status) {
case PackageInstaller.STATUS_FAILURE_ABORTED:
return mContext.getString(R.string.installer_error_aborted);
case PackageInstaller.STATUS_FAILURE_BLOCKED:
String blocker = mContext.getString(R.string.installer_error_blocked_device);
if (blockingPackage != null) {
String appLabel = Utils.getAppLabel(mContext, blockingPackage);
if (appLabel != null)
blocker = appLabel;
}
return mContext.getString(R.string.installer_error_blocked, blocker);
case PackageInstaller.STATUS_FAILURE_CONFLICT:
return mContext.getString(R.string.installer_error_conflict);
case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:
return mContext.getString(R.string.installer_error_incompatible);
case PackageInstaller.STATUS_FAILURE_INVALID:
return mContext.getString(R.string.installer_error_bad_apks);
case PackageInstaller.STATUS_FAILURE_STORAGE:
return mContext.getString(R.string.installer_error_storage);
case STATUS_BAD_ROM:
return mContext.getString(R.string.installer_error_lidl_rom);
}
return mContext.getString(R.string.installer_error_generic);
}
public String getErrorString(int status, String blockingPackage) {
switch (status) {
case PackageInstaller.STATUS_FAILURE_ABORTED:
return getString(R.string.installer_error_aborted);
case PackageInstaller.STATUS_FAILURE_BLOCKED:
String blocker = getString(R.string.installer_error_blocked_device);
if (blockingPackage != null) {
String appLabel = Utils.getAppLabel(getApplicationContext(), blockingPackage);
if (appLabel != null)
blocker = appLabel;
}
return getString(R.string.installer_error_blocked, blocker);
case PackageInstaller.STATUS_FAILURE_CONFLICT:
return getString(R.string.installer_error_conflict);
case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:
return getString(R.string.installer_error_incompatible);
case PackageInstaller.STATUS_FAILURE_INVALID:
return getString(R.string.installer_error_bad_apks);
case PackageInstaller.STATUS_FAILURE_STORAGE:
return getString(R.string.installer_error_storage);
}
return getString(R.string.installer_error_generic);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null && INSTALL_SESSION_API_COMPLETE_ACTION.equals(intent.getAction())) {
int status = extras.getInt(PackageInstaller.EXTRA_STATUS);
String message = extras.getString(PackageInstaller.EXTRA_STATUS_MESSAGE);
String packageName = extras.getString(PackageInstaller.EXTRA_PACKAGE_NAME);
switch (status) {
case PackageInstaller.STATUS_PENDING_USER_ACTION:
packageInstallerResultCallback.onPendingUserAction(extras);
break;
case PackageInstaller.STATUS_SUCCESS:
packageInstallerResultCallback.onInstallationResult(
new InstallStatus(InstallStatus.Status.SUCCESS, "Install succeeded", packageName));
break;
case PackageInstaller.STATUS_FAILURE:
case PackageInstaller.STATUS_FAILURE_BLOCKED:
case PackageInstaller.STATUS_FAILURE_CONFLICT:
case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:
case PackageInstaller.STATUS_FAILURE_INVALID:
case PackageInstaller.STATUS_FAILURE_STORAGE:
packageInstallerResultCallback.onInstallationResult(
new InstallStatus(InstallStatus.Status.FAIL,
"Install failed " + status + ", " + message, packageName));
break;
case PackageInstaller.STATUS_FAILURE_ABORTED:
packageInstallerResultCallback.onInstallationResult(
new InstallStatus(InstallStatus.Status.CANCELED,
"Install failed " + status + ", " + message, packageName));
default:
packageInstallerResultCallback.onInstallationResult(
new InstallStatus(InstallStatus.Status.UNKNOWN_ERROR,
"Unrecognized status received from installer", packageName));
}
}
}
@TargetApi(21)
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle extras = intent.getExtras();
if (PACKAGE_INSTALLED_ACTION.equals(intent.getAction())) {
int status = -100;
String message = "";
if (extras != null) {
status = extras.getInt(PackageInstaller.EXTRA_STATUS);
message = extras.getString(PackageInstaller.EXTRA_STATUS_MESSAGE);
}
switch (status) {
case PackageInstaller.STATUS_PENDING_USER_ACTION:
// This test app isn't privileged, so the user has to confirm the install.
Intent confirmIntent = (Intent) extras.get(Intent.EXTRA_INTENT);
startActivity(confirmIntent);
break;
case PackageInstaller.STATUS_SUCCESS:
Toast.makeText(this, "安装成功!", Toast.LENGTH_SHORT).show();
finish();
break;
case PackageInstaller.STATUS_FAILURE:
case PackageInstaller.STATUS_FAILURE_ABORTED:
case PackageInstaller.STATUS_FAILURE_BLOCKED:
case PackageInstaller.STATUS_FAILURE_CONFLICT:
case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:
case PackageInstaller.STATUS_FAILURE_INVALID:
case PackageInstaller.STATUS_FAILURE_STORAGE:
Toast.makeText(this, "安装失败,请重试",
Toast.LENGTH_SHORT).show();
finish();
Log.d(TAG, "Install failed! " + status + ", " + message);
break;
default:
Toast.makeText(this, "安装失败,解压文件可能已丢失或损坏,请重试",
Toast.LENGTH_SHORT).show();
finish();
Log.d(TAG, "Unrecognized status received from installer: " + 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;
}
}