Index: webapk/shell_apk/src/org/chromium/webapk/shell_apk/MainActivity.java |
diff --git a/webapk/shell_apk/src/org/chromium/webapk/shell_apk/MainActivity.java b/webapk/shell_apk/src/org/chromium/webapk/shell_apk/MainActivity.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..81c8383d771c828456e30b56da2a5c8a661e7b0d |
--- /dev/null |
+++ b/webapk/shell_apk/src/org/chromium/webapk/shell_apk/MainActivity.java |
@@ -0,0 +1,99 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.webapk.shell_apk; |
+ |
+import android.app.Activity; |
+import android.content.ComponentName; |
+import android.content.Intent; |
+import android.content.pm.ApplicationInfo; |
+import android.content.pm.PackageManager; |
+import android.content.pm.PackageManager.NameNotFoundException; |
+import android.graphics.Bitmap; |
+import android.graphics.BitmapFactory; |
+import android.os.Bundle; |
+import android.util.Base64; |
+import android.util.Log; |
+ |
+import org.chromium.webapk.lib.common.WebApkConstants; |
+ |
+import java.io.ByteArrayOutputStream; |
+ |
+/** |
+ * WebAPK's main Activity. |
+ */ |
+public class MainActivity extends Activity { |
+ private static final String EXTRA_ID = "org.chromium.chrome.browser.webapp_id"; |
+ private static final String EXTRA_ICON = "org.chromium.chrome.browser.webapp_icon"; |
+ private static final String EXTRA_NAME = "org.chromium.chrome.browser.webapp_name"; |
+ private static final String EXTRA_URL = "org.chromium.chrome.browser.webapp_url"; |
+ private static final String EXTRA_MAC = "org.chromium.chrome.browser.webapp_mac"; |
+ private static final String EXTRA_SCOPE = "org.chromium.chrome.browser.webapp_scope"; |
+ private static final String META_DATA_HOST_URL = "hostUrl"; |
+ private static final String META_DATA_MAC = "mac"; |
+ private static final String META_DATA_SCOPE = "scope"; |
+ private static final String META_DATA_RUNTIME_HOST = "runtimeHost"; |
+ |
+ private static final String TAG = "cr_MainActivity"; |
+ |
+ @Override |
+ protected void onCreate(Bundle savedInstanceState) { |
+ super.onCreate(savedInstanceState); |
+ |
+ Intent intent = getIntent(); |
+ String packageName = getPackageName(); |
+ String webappId = null; |
+ String mac = null; |
+ String name = null; |
+ String url = null; |
+ String scope = null; |
+ String encodedIcon = null; |
+ String runtimeHost = null; |
+ try { |
+ ApplicationInfo appInfo = getPackageManager().getApplicationInfo( |
+ packageName, PackageManager.GET_META_DATA); |
+ Bundle bundle = appInfo.metaData; |
+ url = bundle.getString(META_DATA_HOST_URL); |
+ scope = bundle.getString(META_DATA_SCOPE); |
+ webappId = WebApkConstants.WEBAPK_ID_PREFIX + packageName; |
+ mac = bundle.getString(META_DATA_MAC); |
+ runtimeHost = bundle.getString(META_DATA_RUNTIME_HOST); |
+ name = (String) getPackageManager().getApplicationLabel(appInfo); |
+ // TODO(hanxi): find a neat solution to avoid encode/decode each time launch the |
+ // activity. |
+ Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.app_icon); |
+ encodedIcon = encodeBitmapAsString(icon); |
+ Log.w(TAG, "Url of the WebAPK: " + url); |
+ Log.w(TAG, "webappId of the WebAPK: " + webappId); |
+ Log.w(TAG, "name of the WebAPK:" + name); |
+ } catch (NameNotFoundException e) { |
+ e.printStackTrace(); |
+ } |
+ |
+ Intent newIntent = new Intent(); |
+ newIntent.setComponent(new ComponentName(runtimeHost, |
+ "org.chromium.chrome.browser.webapps.WebappLauncherActivity")); |
+ newIntent.putExtra(EXTRA_ID, webappId); |
+ newIntent.putExtra(EXTRA_NAME, name); |
+ newIntent.putExtra(EXTRA_SCOPE, scope); |
+ newIntent.putExtra(EXTRA_URL, url); |
+ newIntent.putExtra(EXTRA_MAC, mac); |
+ newIntent.putExtra(EXTRA_ICON, encodedIcon); |
+ startActivity(newIntent); |
+ finish(); |
+ } |
+ |
+ /** |
+ * Compresses a bitmap into a PNG and converts into a Base64 encoded string. |
+ * The encoded string can be decoded using {@link decodeBitmapFromString(String)}. |
+ * @param bitmap The Bitmap to compress and encode. |
+ * @return the String encoding the Bitmap. |
+ */ |
+ private static String encodeBitmapAsString(Bitmap bitmap) { |
+ if (bitmap == null) return ""; |
+ ByteArrayOutputStream output = new ByteArrayOutputStream(); |
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); |
+ return Base64.encodeToString(output.toByteArray(), Base64.DEFAULT); |
+ } |
+} |