Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java |
| index e41e461cd3ea400b3a8b53d983d7944c5d7b64cd..3f69dc277168e427596dbbd1ef24b9be6c8fb9d3 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInstaller.java |
| @@ -5,14 +5,17 @@ |
| package org.chromium.chrome.browser.webapps; |
| import android.content.ActivityNotFoundException; |
| +import android.content.BroadcastReceiver; |
| import android.content.Context; |
| import android.content.Intent; |
| +import android.content.IntentFilter; |
| import android.net.Uri; |
| import android.provider.Settings; |
| import org.chromium.base.ContextUtils; |
| import org.chromium.base.Log; |
| import org.chromium.base.annotations.CalledByNative; |
| +import org.chromium.chrome.browser.ShortcutHelper; |
| import java.io.File; |
| @@ -22,7 +25,6 @@ import java.io.File; |
| */ |
| public class WebApkInstaller { |
| private static final String TAG = "WebApkInstaller"; |
| - |
|
Xi Han
2016/08/19 14:23:24
Revert please.
|
| /** |
| * Installs a WebAPK. |
| * @param filePath File to install. |
| @@ -42,6 +44,7 @@ public class WebApkInstaller { |
| intent.setDataAndType(fileUri, "application/vnd.android.package-archive"); |
| intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| try { |
| + listenForPackageInstallation(packageName); |
| ContextUtils.getApplicationContext().startActivity(intent); |
| } catch (ActivityNotFoundException e) { |
| return false; |
| @@ -49,6 +52,36 @@ public class WebApkInstaller { |
| return true; |
| } |
| + private static class WebApkInstallObserver extends BroadcastReceiver { |
| + private final String mPackageName; |
| + public WebApkInstallObserver(String packageName) { |
| + mPackageName = packageName; |
| + } |
| + |
| + private static String getPackageName(Intent intent) { |
| + Uri uri = intent.getData(); |
| + String pkg = uri != null ? uri.getSchemeSpecificPart() : null; |
| + return pkg; |
| + } |
| + |
|
gone
2016/08/18 21:16:01
nit: extra newline
|
| + |
| + @Override |
| + public void onReceive(Context context, Intent intent) { |
| + if (mPackageName.equals(getPackageName(intent))) { |
| + ShortcutHelper.addWebApkShortcut(context, mPackageName); |
| + context.unregisterReceiver(this); |
| + } |
| + } |
| + |
| + } |
| + |
| + private static void listenForPackageInstallation(String packageName) { |
| + IntentFilter iFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); |
| + iFilter.addDataScheme("package"); |
| + ContextUtils.getApplicationContext().registerReceiver( |
| + new WebApkInstallObserver(packageName), iFilter); |
| + } |
| + |
| /** |
| * Returns whether the user has enabled installing apps from sources other than the Google Play |
| * Store. |