Android修改PackageInstaller自动安装指定应用

diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallApp
index 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<ResolveInfo> 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 button
diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/Pack
index 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
发布了234 篇原创文章 · 获赞 64 · 访问量 95万+

猜你喜欢

转载自blog.csdn.net/zhoumushui/article/details/101428008
今日推荐