diff options
Diffstat (limited to 'src/com/android/packageinstaller/InstallAppProgress.java')
-rwxr-xr-x | src/com/android/packageinstaller/InstallAppProgress.java | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/src/com/android/packageinstaller/InstallAppProgress.java b/src/com/android/packageinstaller/InstallAppProgress.java index 45d8391b..08a6d1dd 100755 --- a/src/com/android/packageinstaller/InstallAppProgress.java +++ b/src/com/android/packageinstaller/InstallAppProgress.java @@ -32,6 +32,7 @@ import android.content.pm.ResolveInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.graphics.drawable.Drawable; +import android.graphics.drawable.LevelListDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -61,6 +62,7 @@ public class InstallAppProgress extends Activity implements View.OnClickListener private ProgressBar mProgressBar; private View mOkPanel; private TextView mStatusTextView; + private TextView mExplanationTextView; private Button mDoneButton; private Button mLaunchButton; private final int INSTALL_COMPLETE = 1; @@ -76,10 +78,12 @@ public class InstallAppProgress extends Activity implements View.OnClickListener mProgressBar.setVisibility(View.INVISIBLE); // Show the ok button int centerTextLabel; - Drawable centerTextDrawable = null; - if(msg.arg1 == PackageManager.INSTALL_SUCCEEDED) { + int centerExplanationLabel = -1; + LevelListDrawable centerTextDrawable = (LevelListDrawable) getResources() + .getDrawable(R.drawable.ic_result_status); + if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) { mLaunchButton.setVisibility(View.VISIBLE); - centerTextDrawable = getResources().getDrawable(R.drawable.button_indicator_finish); + centerTextDrawable.setLevel(0); centerTextLabel = R.string.install_done; // Enable or disable launch button mLaunchIntent = getPackageManager().getLaunchIntentForPackage( @@ -102,8 +106,8 @@ public class InstallAppProgress extends Activity implements View.OnClickListener return; } else { // Generic error handling for all other error codes. - centerTextDrawable = Resources.getSystem().getDrawable( - com.android.internal.R.drawable.ic_bullet_key_permission); + centerTextDrawable.setLevel(1); + centerExplanationLabel = getExplanationFromErrorCode(msg.arg1); centerTextLabel = R.string.install_failed; mLaunchButton.setVisibility(View.INVISIBLE); } @@ -114,6 +118,12 @@ public class InstallAppProgress extends Activity implements View.OnClickListener mStatusTextView.setCompoundDrawables(centerTextDrawable, null, null, null); } mStatusTextView.setText(centerTextLabel); + if (centerExplanationLabel != -1) { + mExplanationTextView.setText(centerExplanationLabel); + mExplanationTextView.setVisibility(View.VISIBLE); + } else { + mExplanationTextView.setVisibility(View.GONE); + } mDoneButton.setOnClickListener(InstallAppProgress.this); mOkPanel.setVisibility(View.VISIBLE); break; @@ -123,6 +133,22 @@ public class InstallAppProgress extends Activity implements View.OnClickListener } }; + private int getExplanationFromErrorCode(int errCode) { + Log.d(TAG, "Installation error code: " + errCode); + switch (errCode) { + case PackageManager.INSTALL_FAILED_INVALID_APK: + return R.string.install_failed_invalid_apk; + case PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: + return R.string.install_failed_inconsistent_certificates; + case PackageManager.INSTALL_FAILED_OLDER_SDK: + return R.string.install_failed_older_sdk; + case PackageManager.INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: + return R.string.install_failed_cpu_abi_incompatible; + default: + return -1; + } + } + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -194,6 +220,7 @@ public class InstallAppProgress extends Activity implements View.OnClickListener PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet); mStatusTextView = (TextView)findViewById(R.id.center_text); mStatusTextView.setText(R.string.installing); + mExplanationTextView = (TextView) findViewById(R.id.center_explanation); mProgressBar = (ProgressBar) findViewById(R.id.progress_bar); mProgressBar.setIndeterminate(true); // Hide button till progress is being displayed |