// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.webapk.lib.common;
import android.os.Bundle;
/** Contains utility methods for extracting WebAPK's meta data. */
public class WebApkMetaDataUtils {
/**
* Extracts long value from the WebAPK's meta data.
*
* @param metaData WebAPK meta data to extract the long from.
* @param name Name of the <meta-data> tag to extract the value from.
* @param defaultValue Value to return if long value could not be extracted.
* @return long value.
*/
public static long getLongFromMetaData(Bundle metaData, String name, long defaultValue) {
String value = metaData.getString(name);
// The value should be terminated with 'L' to force the value to be a string. According to
// https://developer.android.com/guide/topics/manifest/meta-data-element.html numeric
// meta data values can only be retrieved via {@link Bundle#getInt()} and
// {@link Bundle#getFloat()}. We cannot use {@link Bundle#getFloat()} due to loss of
// precision.
if (value == null || !value.endsWith("L")) {
return defaultValue;
}
try {
return Long.parseLong(value.substring(0, value.length() - 1));
} catch (NumberFormatException e) {
}
return defaultValue;
}
}