summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2016-01-13 16:51:55 -0800
committerSvetoslav Ganov <svetoslavganov@google.com>2016-01-14 00:56:58 +0000
commit82e74ce4906cce41c730188b4b0298b37736d079 (patch)
treeb152fb9ab5575d9f765beed361d7e7f4b8262ced /src
parentbae2b676e47548f9b8f0cf7ca1aae22ff806bfbb (diff)
downloadandroid_packages_apps_PackageInstaller-82e74ce4906cce41c730188b4b0298b37736d079.tar.gz
android_packages_apps_PackageInstaller-82e74ce4906cce41c730188b4b0298b37736d079.tar.bz2
android_packages_apps_PackageInstaller-82e74ce4906cce41c730188b4b0298b37736d079.zip
Improve untrusted sources UX for app side-loading
When an app is side-loaded we request the user to enable installs from untrusted sources by sending them to setting. After the user enables untrusted sources they have to start the install again instead of continuing from where they were interrupted by the settings UI. With this change the settings activity is started for a result by the package installer, so if the settings app wants to support non-interruptive side- loading flow it can check whether the calling package is the instaler and if true finish itself returning RESULT_OK. bug:26510156 Change-Id: I32d63b7535a84fa2b5b8837cff7d09f6de4a3475
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/PackageInstallerActivity.java23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java
index 868872a9..c123a089 100644
--- a/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -68,6 +68,8 @@ import java.util.List;
public class PackageInstallerActivity extends Activity implements OnCancelListener, OnClickListener {
private static final String TAG = "PackageInstaller";
+ private static final int REQUEST_ENABLE_UNKNOWN_SOURCES = 1;
+
private int mSessionId = -1;
private Uri mPackageURI;
private Uri mOriginatingURI;
@@ -245,7 +247,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
.setPositiveButton(R.string.settings, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "Launching settings");
- launchSettingsAppAndFinish();
+ launchSecuritySettings();
}
})
.setOnCancelListener(this)
@@ -350,12 +352,21 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
return null;
}
- private void launchSettingsAppAndFinish() {
- // Create an intent to launch SettingsTwo activity
+ private void launchSecuritySettings() {
Intent launchSettingsIntent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
- launchSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(launchSettingsIntent);
- finish();
+ startActivityForResult(launchSettingsIntent, REQUEST_ENABLE_UNKNOWN_SOURCES);
+ }
+
+ @Override
+ public void onActivityResult(int request, int result, Intent data) {
+ // If the settings app approved the install we are good to go regardless
+ // whether the untrusted sources setting is on. This allows partners to
+ // implement a "allow untrusted source once" feature.
+ if (request == REQUEST_ENABLE_UNKNOWN_SOURCES && result == RESULT_OK) {
+ initiateInstall();
+ } else {
+ finish();
+ }
}
private boolean isInstallRequestFromUnknownSource(Intent intent) {