diff options
Diffstat (limited to 'src/com/android/packageinstaller/PackageInstallerActivity.java')
-rw-r--r-- | src/com/android/packageinstaller/PackageInstallerActivity.java | 87 |
1 files changed, 1 insertions, 86 deletions
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java index 621da358..7eea541e 100644 --- a/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -26,19 +26,16 @@ import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; -import android.content.pm.ManifestDigest; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageParser; import android.content.pm.PackageUserState; -import android.content.pm.ResolveInfo; import android.content.pm.VerificationParams; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.os.SystemClock; import android.os.UserManager; import android.provider.Settings; import android.support.v4.view.ViewPager; @@ -53,7 +50,6 @@ import android.widget.TabHost; import android.widget.TextView; import java.io.File; -import java.util.List; /* * This activity is launched when a new application is installed via side loading @@ -75,7 +71,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen private Uri mOriginatingURI; private Uri mReferrerURI; private int mOriginatingUid = VerificationParams.NO_UID; - private ManifestDigest mPkgDigest; private boolean localLOGV = false; PackageManager mPm; @@ -87,8 +82,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen // ApplicationInfo object primarily used for already existing applications private ApplicationInfo mAppInfo = null; - private InstallFlowAnalytics mInstallFlowAnalytics; - // View for install progress View mInstallConfirm; // Buttons to indicate user acceptance @@ -99,8 +92,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen static final String PREFS_ALLOWED_SOURCES = "allowed_sources"; - private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive"; - private static final String TAB_ID_ALL = "all"; private static final String TAB_ID_NEW = "new"; @@ -119,16 +110,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen tabHost.setup(); ViewPager viewPager = (ViewPager)findViewById(R.id.pager); TabsAdapter adapter = new TabsAdapter(this, tabHost, viewPager); - adapter.setOnTabChangedListener(new TabHost.OnTabChangeListener() { - @Override - public void onTabChanged(String tabId) { - if (TAB_ID_ALL.equals(tabId)) { - mInstallFlowAnalytics.setAllPermissionsDisplayed(true); - } else if (TAB_ID_NEW.equals(tabId)) { - mInstallFlowAnalytics.setNewPermissionsDisplayed(true); - } - } - }); // If the app supports runtime permissions the new permissions will // be requested at runtime, hence we do not show them at install. boolean supportsRuntimePermissions = mPkgInfo.applicationInfo.targetSdkVersion @@ -150,7 +131,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen if (!supportsRuntimePermissions) { newPermissionsFound = (perms.getPermissionCount(AppSecurityPermissions.WHICH_NEW) > 0); - mInstallFlowAnalytics.setNewPermissionsFound(newPermissionsFound); if (newPermissionsFound) { permVisible = true; mScrollView.addView(perms.getPermissionsView( @@ -183,7 +163,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen adapter.addTab(tabHost.newTabSpec(TAB_ID_ALL).setIndicator( getText(R.string.allPerms)), root); } - mInstallFlowAnalytics.setPermissionsDisplayed(permVisible); if (!permVisible) { if (mAppInfo != null) { // This is an update to an application, but there are no @@ -196,8 +175,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen msg = R.string.install_confirm_question_no_perms; } tabHost.setVisibility(View.GONE); - mInstallFlowAnalytics.setAllPermissionsDisplayed(false); - mInstallFlowAnalytics.setNewPermissionsDisplayed(false); findViewById(R.id.filler).setVisibility(View.VISIBLE); findViewById(R.id.divider).setVisibility(View.GONE); mScrollView = null; @@ -387,23 +364,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen return true; } - private boolean isVerifyAppsEnabled() { - if (mUserManager.hasUserRestriction(UserManager.ENSURE_VERIFY_APPS)) { - return true; - } - return Settings.Global.getInt(getContentResolver(), - Settings.Global.PACKAGE_VERIFIER_ENABLE, 1) > 0; - } - - private boolean isAppVerifierInstalled() { - final PackageManager pm = getPackageManager(); - final Intent verification = new Intent(Intent.ACTION_PACKAGE_NEEDS_VERIFICATION); - verification.setType(PACKAGE_MIME_TYPE); - verification.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - final List<ResolveInfo> receivers = pm.queryBroadcastReceivers(verification, 0); - return (receivers.size() > 0) ? true : false; - } - /** * @return whether unknown sources is enabled by user in Settings */ @@ -443,10 +403,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen mAppInfo = null; } - mInstallFlowAnalytics.setReplace(mAppInfo != null); - mInstallFlowAnalytics.setSystemApp( - (mAppInfo != null) && ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)); - // If we have a session id, we're invoked to verify the permissions for the given // package. Otherwise, we start the install process. if (mSessionId != -1) { @@ -495,21 +451,8 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen final boolean unknownSourcesAllowedByAdmin = isUnknownSourcesAllowedByAdmin(); final boolean unknownSourcesAllowedByUser = isUnknownSourcesEnabled(); - boolean requestFromUnknownSource = isInstallRequestFromUnknownSource(intent); - mInstallFlowAnalytics = new InstallFlowAnalytics(); - mInstallFlowAnalytics.setContext(this); - mInstallFlowAnalytics.setStartTimestampMillis(SystemClock.elapsedRealtime()); - mInstallFlowAnalytics.setInstallsFromUnknownSourcesPermitted(unknownSourcesAllowedByAdmin - && unknownSourcesAllowedByUser); - mInstallFlowAnalytics.setInstallRequestFromUnknownSource(requestFromUnknownSource); - mInstallFlowAnalytics.setVerifyAppsEnabled(isVerifyAppsEnabled()); - mInstallFlowAnalytics.setAppVerifierInstalled(isAppVerifierInstalled()); - mInstallFlowAnalytics.setPackageUri(mPackageURI.toString()); - if (DeviceUtils.isWear(this)) { showDialogInner(DLG_NOT_SUPPORTED_ON_WEAR); - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_NOT_ALLOWED_ON_WEAR); return; } @@ -517,15 +460,12 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen if (scheme != null && !"file".equals(scheme) && !"package".equals(scheme)) { Log.w(TAG, "Unsupported scheme " + scheme); setPmResult(PackageManager.INSTALL_FAILED_INVALID_URI); - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_FAILED_UNSUPPORTED_SCHEME); finish(); return; } final PackageUtil.AppSnippet as; if ("package".equals(mPackageURI.getScheme())) { - mInstallFlowAnalytics.setFileUri(false); try { mPkgInfo = mPm.getPackageInfo(mPackageURI.getSchemeSpecificPart(), PackageManager.GET_PERMISSIONS | PackageManager.GET_UNINSTALLED_PACKAGES); @@ -536,15 +476,11 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen + " not available. Discontinuing installation"); showDialogInner(DLG_PACKAGE_ERROR); setPmResult(PackageManager.INSTALL_FAILED_INVALID_APK); - mInstallFlowAnalytics.setPackageInfoObtained(); - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_FAILED_PACKAGE_MISSING); return; } as = new PackageUtil.AppSnippet(mPm.getApplicationLabel(mPkgInfo.applicationInfo), mPm.getApplicationIcon(mPkgInfo.applicationInfo)); } else { - mInstallFlowAnalytics.setFileUri(true); final File sourceFile = new File(mPackageURI.getPath()); PackageParser.Package parsed = PackageUtil.getPackageInfo(sourceFile); @@ -553,18 +489,13 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen Log.w(TAG, "Parse error when parsing manifest. Discontinuing installation"); showDialogInner(DLG_PACKAGE_ERROR); setPmResult(PackageManager.INSTALL_FAILED_INVALID_APK); - mInstallFlowAnalytics.setPackageInfoObtained(); - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_FAILED_TO_GET_PACKAGE_INFO); return; } mPkgInfo = PackageParser.generatePackageInfo(parsed, null, PackageManager.GET_PERMISSIONS, 0, 0, null, new PackageUserState()); - mPkgDigest = parsed.manifestDigest; as = PackageUtil.getAppSnippet(this, mPkgInfo.applicationInfo, sourceFile); } - mInstallFlowAnalytics.setPackageInfoObtained(); //set view setContentView(R.layout.install_start); @@ -575,6 +506,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen mOriginatingUid = getOriginatingUid(intent); // Block the install attempt on the Unknown Sources setting if necessary. + final boolean requestFromUnknownSource = isInstallRequestFromUnknownSource(intent); if (!requestFromUnknownSource) { initiateInstall(); return; @@ -586,13 +518,9 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen if (!unknownSourcesAllowedByAdmin || (!unknownSourcesAllowedByUser && isManagedProfile)) { showDialogInner(DLG_ADMIN_RESTRICTS_UNKNOWN_SOURCES); - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_BLOCKED_BY_UNKNOWN_SOURCES_SETTING); } else if (!unknownSourcesAllowedByUser) { // Ask user to enable setting first showDialogInner(DLG_UNKNOWN_SOURCES); - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_BLOCKED_BY_UNKNOWN_SOURCES_SETTING); } else { initiateInstall(); } @@ -675,8 +603,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen if (mSessionId != -1) { mInstaller.setPermissionsResult(mSessionId, false); } - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_CANCELLED_BY_USER); super.onBackPressed(); } @@ -688,14 +614,8 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen public void onClick(View v) { if (v == mOk) { if (mOkCanInstall || mScrollView == null) { - 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); finish(); } else { startInstall(); @@ -709,8 +629,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen if (mSessionId != -1) { mInstaller.setPermissionsResult(mSessionId, false); } - mInstallFlowAnalytics.setFlowFinished( - InstallFlowAnalytics.RESULT_CANCELLED_BY_USER); finish(); } } @@ -722,9 +640,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen 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) { |