package com.tns; import java.io.*; import com.tns.internal.Plugin; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; public final class Util { private Util() { } public static String getDexThumb(Context context) throws NameNotFoundException { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); int code = packageInfo.versionCode; long updateTime = packageInfo.lastUpdateTime; return String.valueOf(updateTime) + "-" + String.valueOf(code); } public static boolean isDebuggableApp(Context context) { int flags; try { flags = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.flags; } catch (NameNotFoundException e) { flags = 0; e.printStackTrace(); } boolean isDebuggableApp = ((flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0); return isDebuggableApp; } static boolean runPlugin(Logger logger, Context context) { boolean success = false; String pluginClassName = "org.nativescript.livesync.LiveSyncPlugin"; try { ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); Bundle metadataBundle = ai.metaData; if (metadataBundle != null) { pluginClassName = metadataBundle.getString("com.tns.internal.Plugin"); } } catch (Exception e) { if (logger.isEnabled()) { e.printStackTrace(); } } try { Class<?> liveSyncPluginClass = Class.forName(pluginClassName); Plugin p = (Plugin) liveSyncPluginClass.newInstance(); success = p.execute(context); } catch (Exception e) { if (logger.isEnabled()) { e.printStackTrace(); } } return success; } public static String readSystemProperty(String name) { InputStreamReader in = null; BufferedReader reader = null; try { Process proc = java.lang.Runtime.getRuntime().exec(new String[] { "/system/bin/getprop", name }); in = new InputStreamReader(proc.getInputStream()); reader = new BufferedReader(in); return reader.readLine(); } catch (IOException e) { return null; } finally { silentClose(in); silentClose(reader); } } private static void silentClose(Closeable closeable) { if (closeable == null) { return; } try { closeable.close(); } catch (IOException ignored) { } } public static Boolean isPositive(String value) { if (value == null) { return false; } return (value.equals("true") || value.equals("TRUE") || value.equals("yes") || value.equals("YES") || value.equals("enabled") || value.equals("ENABLED")); } }