平台:rk3188
系统:5.1
实现方式就是将安装提示界面去除,安装完成启动apk。
diff --git a/packages/apps/PackageInstaller/AndroidManifest.xml b/packages/apps/PackageInstaller/AndroidManifest.xml
old mode 100644
new mode 100755
index acab0146f3..3a3533f4fb
--- a/packages/apps/PackageInstaller/AndroidManifest.xml
+++ b/packages/apps/PackageInstaller/AndroidManifest.xml
@@ -24,6 +24,7 @@
android:supportsRtl="true">
<activity android:name=".PackageInstallerActivity"
+ android:theme="@android:style/Theme.NoDisplay"
android:configChanges="orientation|keyboardHidden|screenSize"
android:excludeFromRecents="true">
<intent-filter>
@@ -46,6 +47,7 @@
</activity>
<activity android:name=".InstallAppProgress"
+ android:theme="@android:style/Theme.NoDisplay"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false" />
diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
index d51cab1dd2..19eae6d46f 100755
--- a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
@@ -88,15 +88,17 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
return;
}
// Update the status text
- mProgressBar.setVisibility(View.INVISIBLE);
+ /*zwq add */
+ // mProgressBar.setVisibility(View.INVISIBLE);
// Show the ok button
int centerTextLabel;
int centerExplanationLabel = -1;
LevelListDrawable centerTextDrawable =
(LevelListDrawable) getDrawable(R.drawable.ic_result_status);
if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {
+ /*zwq add
mLaunchButton.setVisibility(View.VISIBLE);
- centerTextDrawable.setLevel(0);
+ centerTextDrawable.setLevel(0);*/
centerTextLabel = R.string.install_done;
// Enable or disable launch button
mLaunchIntent = getPackageManager().getLaunchIntentForPackage(
@@ -109,11 +111,14 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
enabled = true;
}
}
- if (enabled) {
+ startActivity(mLaunchIntent);
+ finish();
+ //zwq add
+ /* if (enabled) {
mLaunchButton.setOnClickListener(InstallAppProgress.this);
} else {
mLaunchButton.setEnabled(false);
- }
+ }*/
} else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE){
showDialogInner(DLG_OUT_OF_SPACE);
return;
@@ -138,8 +143,9 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
} else {
mExplanationTextView.setVisibility(View.GONE);
}
- mDoneButton.setOnClickListener(InstallAppProgress.this);
+ mDoneButton.setOnClickListener(InstallAppProgress.this);
mOkPanel.setVisibility(View.VISIBLE);
+
break;
default:
break;
@@ -224,6 +230,7 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
}
public void initView() {
+ /*zwq add */
setContentView(R.layout.op_progress);
int installFlags = 0;
PackageManager pm = getPackageManager();
@@ -249,15 +256,22 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
}
mLabel = as.label;
PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet);
+ /*zwq add */
mStatusTextView = (TextView)findViewById(R.id.center_text);
mStatusTextView.setText(R.string.installing);
+ mStatusTextView.setVisibility(View.GONE);
mExplanationTextView = (TextView) findViewById(R.id.center_explanation);
+ mExplanationTextView.setVisibility(View.GONE);
mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
mProgressBar.setIndeterminate(true);
+ mProgressBar.setVisibility(View.GONE);
// Hide button till progress is being displayed
mOkPanel = (View)findViewById(R.id.buttons_panel);
+ mOkPanel.setVisibility(View.GONE);
mDoneButton = (Button)findViewById(R.id.done_button);
+ mDoneButton.setVisibility(View.GONE);
mLaunchButton = (Button)findViewById(R.id.launch_button);
+ mLaunchButton.setVisibility(View.GONE);
mOkPanel.setVisibility(View.INVISIBLE);
String installerPackageName = getIntent().getStringExtra(
diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
old mode 100644
new mode 100755
index e600dd8f9d..92462f17d1
--- a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -111,7 +111,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
private static final int DLG_ADMIN_RESTRICTS_UNKNOWN_SOURCES = DLG_BASE + 6;
private void startInstallConfirm() {
- TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
+ /* TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setup();
ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
TabsAdapter adapter = new TabsAdapter(this, tabHost, viewPager);
@@ -224,7 +224,56 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
mOkCanInstall = true;
}
});
- }
+ }*/
+
+ /*zwq add */
+ mOkCanInstall = true;
+
+ if (mOkCanInstall) {
+ mInstallFlowAnalytics.setInstallButtonClicked();
+ if (mSessionId != -1) {
+ mInstaller.setPermissionsResult(mSessionId, true);
+
+ // We're only confirming permissions, so we don't really know how the
+ // story ends; assume success.
+ mInstallFlowAnalytics.setFlowFinishedWithPackageManagerResult(
+ PackageManager.INSTALL_SUCCEEDED);
+ } else {
+ // Start subactivity to actually install the application
+ Intent newIntent = new Intent();
+ newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO,
+ mPkgInfo.applicationInfo);
+ newIntent.setData(mPackageURI);
+ newIntent.setClass(this, InstallAppProgress.class);
+ newIntent.putExtra(InstallAppProgress.EXTRA_MANIFEST_DIGEST, mPkgDigest);
+ newIntent.putExtra(
+ InstallAppProgress.EXTRA_INSTALL_FLOW_ANALYTICS, mInstallFlowAnalytics);
+ String installerPackageName = getIntent().getStringExtra(
+ Intent.EXTRA_INSTALLER_PACKAGE_NAME);
+ if (mOriginatingURI != null) {
+ newIntent.putExtra(Intent.EXTRA_ORIGINATING_URI, mOriginatingURI);
+ }
+ if (mReferrerURI != null) {
+ newIntent.putExtra(Intent.EXTRA_REFERRER, mReferrerURI);
+ }
+ if (mOriginatingUid != VerificationParams.NO_UID) {
+ newIntent.putExtra(Intent.EXTRA_ORIGINATING_UID, mOriginatingUid);
+ }
+ if (installerPackageName != null) {
+ newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,
+ installerPackageName);
+ }
+ if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
+ newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
+ newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ }
+ if(localLOGV) Log.i(TAG, "downloaded app uri="+mPackageURI);
+ startActivity(newIntent);
+ }
+ finish();
+ } else {
+ mScrollView.pageScroll(View.FOCUS_DOWN);
+ }
}
private void showDialogInner(int id) {
修改还是有优化的地方,这里只是实现了这个功能,以后慢慢来优化。