Android修改PackageInstaller自动安装指定应用
16lz
2021-12-04
diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppindex 49d91cf..bbc78f5 100755--- a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java@@ -58,6 +58,7 @@ import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.List;+import android.content.ComponentName;/** * This activity corresponds to a download progress screen that is displayed@@ -101,6 +102,29 @@ public class InstallAppProgress extends Activity implements View.OnClickListener clearCachedApkIfNeededAndFinish(); return; }+ if (getIntent().getBooleanExtra("AutoInstall", false) && msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {+ Intent mIntent = getPackageManager().getLaunchIntentForPackage(+ mAppInfo.packageName);+ boolean enabled = false;+ if(mIntent != null) {+ List list = getPackageManager().+ queryIntentActivities(mIntent, 0);+ if (list != null && list.size() > 0) {+ enabled = true;+ }+ }+ if (enabled && "com.antutu.benchmark.full".equals(mAppInfo.packageName)) {//如果自动安装的apk是antutufull(3dTest),则>安装完成后自动启动测试+ Intent intent = new Intent("com.antutu.benchmark.full.MAROONED_RUN");+ intent.setFlags(335544320);+ intent.setComponent(new ComponentName("com.antutu.benchmark.full", "com.antutu.benchmark.full.UnityPlayerActivity"));+ intent.putExtra("uid", "8939");+ startActivity(intent);+ //startActivity(mIntent);+ }+ finish();+ return;+ }+ // Update the status text mProgressBar.setVisibility(View.GONE); // Show the ok buttondiff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/Packindex de68582..b85b767 100644--- a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java@@ -120,6 +120,35 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen private static final int DLG_NOT_SUPPORTED_ON_WEAR = DLG_BASE + 7; private void startInstallConfirm() {+ if(mAutoInstall)+ {+ Intent newIntent = new Intent();+ newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO,+ mPkgInfo.applicationInfo);+ newIntent.setData(mPackageURI);+ newIntent.setClass(this, InstallAppProgress.class);+ 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);+ }+ newIntent.putExtra("AutoInstall", true);+ if(localLOGV) Log.i(TAG, "downloaded app uri="+mPackageURI);+ startActivity(newIntent);+ finish();+ }else{ ((TextView) findViewById(R.id.install_confirm_question)) .setText(R.string.install_confirm_question); findViewById(R.id.spacer).setVisibility(View.GONE);@@ -217,6 +246,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen }); } }+} private void showDialogInner(int id) { // TODO better fix for this? Remove dialog so that it gets created again@@ -402,6 +432,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen ? RESULT_OK : RESULT_FIRST_USER, result); }+ boolean mAutoInstall = false; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle);@@ -433,6 +464,8 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen packageUri = intent.getData(); mOriginatingURI = intent.getParcelableExtra(Intent.EXTRA_ORIGINATING_URI); mReferrerURI = intent.getParcelableExtra(Intent.EXTRA_REFERRER);+ mAutoInstall = intent.getBooleanExtra("AutoInstall", false);+ Log.v(TAG,"mAutoInstall:"+ mAutoInstall); } // if there's nothing to do, quietly slip into the ether
更多相关文章
- Android(安卓)单元测试之JUnit和Mockito
- 第一章 andrid visdio 安装
- Android(安卓)SDK离线快速安装教程 Android(安卓)SDK and AVD Ma
- [置顶] Android(安卓)安装详解---Mr.Zhang
- hello world 第一个android程序
- (window)Android(安卓)Studio安装以及Fetching android sdk comp
- Android(安卓)软件安装方法介绍
- Android单元测试初探Instrumentation
- Android环境变量配置