Example usage for android.content.pm PackageManager getApplicationLabel

List of usage examples for android.content.pm PackageManager getApplicationLabel

Introduction

In this page you can find the example usage for android.content.pm PackageManager getApplicationLabel.

Prototype

public abstract CharSequence getApplicationLabel(ApplicationInfo info);

Source Link

Document

Return the label to use for this application.

Usage

From source file:org.uguess.android.sysinfo.SiragonManager.java

String generateTextReport(boolean[] items) {
    StringBuffer sb = new StringBuffer();

    createTextHeader(getActivity(), sb, "Android Sragon Report - I&D " //$NON-NLS-1$
            + new Date().toLocaleString());

    if (items[BASIC_INFO]) {
        sb.append("####################\n");
        sb.append(getString(R.string.tab_info)).append('\n');
        sb.append(HEADER_SPLIT);//from w w w.j  av a2 s  .  c om

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.sd_storage)).append(":\n"); //$NON-NLS-1$

        String[] info = getExternalStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_external, info[0], info[1]) + "\n");
        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.a2sd_storage) + ":").append("\n"); //$NON-NLS-2$
        info = getA2SDStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
            sb.append("\n");
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
            sb.append("\n");

        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.display) + ":").append("\n"); //$NON-NLS-2$

        String[] info2 = getInfoDisplay();

        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));

        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.info_display, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_back_img_support)).append("\n"); //$NON-NLS-1$

        info2 = getSupportedPreviewSizes(0);

        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));

        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.support_image_back, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_back_vid_support)).append("\n"); //$NON-NLS-1$

        info2 = getSupportedPreviewSizesVideo(0);

        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));

        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.support_video_back, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$
        //////////////////////////////////////////////////////////////////////////////////
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_other_feature) + ":").append("\n"); //$NON-NLS-2$

        info2 = getSupportedOtherCamera(0);

        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));

        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.camera_des_feature, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_front_img_support)).append("\n"); //$NON-NLS-1$

        info2 = getSupportedPreviewSizes(1);

        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));

        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.support_image_front, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_front_vid_support)).append("\n"); //$NON-NLS-1$

        info2 = getSupportedPreviewSizesVideo(1);

        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));

        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.support_video_front, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_feature)).append("\n"); //$NON-NLS-1$}

        info2 = getAvailableFeatureCamera();
        if (info2 == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            for (int i = 0; i < info2.length; i++) {
                sb.append(getString(R.string.camera_all_feature, info2[i])).append("\n");
            }
        }
        sb.append("####################\n"); //$NON-NLS-1$*/
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_back_available)).append(":").append("\n"); //$NON-NLS-2$

        int cams = getNumberCamera();
        if (cams == 0) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.number_cams, cams) + "\n");
        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.camera_flash_available) + ":").append("\n"); //$NON-NLS-2$}

        boolean flash = getAvailableFlash();
        if (flash == false) {
            sb.append(getString(R.string.info_not_available) + "\n");
        } else {
            sb.append(getString(R.string.flash_available, flash) + "\n");
        }

        sb.append("####################\n"); //$NON-NLS-1$
        //////////////////////////////////////////////////////////////////////////////////////7

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.internal_storage) + ":").append("\n"); //$NON-NLS-2$

        info = getInternalStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available) + "\n");
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]) + "\n");
        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.system_storage)).append(":\n"); //$NON-NLS-1$

        info = getSystemStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available) + "\n");
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]) + "\n");
        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.cache_storage)).append(":\n"); //$NON-NLS-1$

        info = getCacheStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available) + "\n");
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]) + "\n");
        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.memory)).append(":\n"); //$NON-NLS-1$

        info = getMemInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available) + "\n");
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[2])
                    + getString(R.string.idle_info, info[1]) + "\n");
        }
        sb.append("####################\n"); //$NON-NLS-1$

        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.processor) + ":").append("\n") //$NON-NLS-2$
                .append(getCpuInfo() + "\n").append("####################\n"); //$NON-NLS-2$

        String nInfo = getNetAddressInfo();
        sb.append("* ") //$NON-NLS-1$
                .append(getString(R.string.net_address) + ":").append("\n") //$NON-NLS-2$
                .append(nInfo == null ? getString(R.string.info_not_available) + "\n" : nInfo + "\n")
                .append("####################\n"); //$NON-NLS-1$

        //sb.append( '\n' );

        try {
            File f = new File(F_SCALE_FREQ);
            if (f.exists()) {
                sb.append(getString(R.string.sc_freq));

                readRawText(sb, new FileInputStream(f));
            } else {
                sb.append(getString(R.string.no_sc_freq_info)).append('\n');
            }

            sb.append("####################\n");

            f = new File(F_CPU_INFO);
            if (f.exists()) {
                readRawText(sb, new FileInputStream(f));
            } else {
                sb.append(getString(R.string.no_cpu_info)).append('\n');
            }

            sb.append("####################\n");

            f = new File(F_MEM_INFO);
            if (f.exists()) {
                readRawText(sb, new FileInputStream(f));
            } else {
                sb.append(getString(R.string.no_mem_info)).append('\n');
            }

            sb.append("####################\n");

            f = new File(F_MOUNT_INFO);
            if (f.exists()) {
                readRawText(sb, new FileInputStream(f));
            } else {
                sb.append(getString(R.string.no_mount_info)).append('\n');
            }

            sb.append("####################\n");
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }
    }

    if (items[APPLICATIONS]) {
        sb.append(HEADER_SPLIT);
        sb.append(getString(R.string.tab_apps) + ":").append('\n');
        PackageManager pm = getActivity().getPackageManager();
        List<PackageInfo> pkgs = pm.getInstalledPackages(0);

        if (pkgs != null) {
            for (int i = 0, size = pkgs.size(); i < size; i++) {
                PackageInfo pkg = pkgs.get(i);

                sb.append(pkg.packageName).append(" <") //$NON-NLS-1$
                        .append(pkg.versionName).append(" (") //$NON-NLS-1$
                        .append(pkg.versionCode).append(")>"); //$NON-NLS-1$

                if (pkg.applicationInfo != null) {
                    sb.append("\t: ") //$NON-NLS-1$
                            .append(pkg.applicationInfo.loadLabel(pm)).append(" | ") //$NON-NLS-1$
                            .append(pkg.applicationInfo.flags).append(" | ") //$NON-NLS-1$
                            .append(pkg.applicationInfo.sourceDir);
                }

                sb.append('\n');
            }
        }

        sb.append("####################\n");
    }

    if (items[PROCESSES]) {
        sb.append(HEADER_SPLIT);
        sb.append(getString(R.string.tab_procs) + ":").append('\n');

        ActivityManager am = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningAppProcessInfo> procs = am.getRunningAppProcesses();

        if (procs != null) {
            PackageManager pm = getActivity().getPackageManager();

            for (int i = 0, size = procs.size(); i < size; i++) {
                RunningAppProcessInfo proc = procs.get(i);

                sb.append('<').append(getImportance(proc)).append("> [") //$NON-NLS-1$
                        .append(proc.pid).append("]\t:\t"); //$NON-NLS-1$

                sb.append(proc.processName);

                try {
                    ApplicationInfo ai = pm.getApplicationInfo(proc.processName, 0);

                    if (ai != null) {
                        CharSequence label = pm.getApplicationLabel(ai);

                        if (label != null && !label.equals(proc.processName)) {
                            sb.append(" ( ") //$NON-NLS-1$
                                    .append(label).append(" )"); //$NON-NLS-1$
                        }
                    }
                } catch (NameNotFoundException e) {
                    // ignore this error
                }

                sb.append('\n');
            }
        }

        sb.append("####################\n");
    }

    if (items[NETSTATES]) {
        sb.append(HEADER_SPLIT);
        sb.append(getString(R.string.tab_netstat) + ":").append('\n');

        try {
            readRawText(sb, new FileInputStream("/proc/net/tcp")); //$NON-NLS-1$

            sb.append('\n');

            readRawText(sb, new FileInputStream("/proc/net/udp")); //$NON-NLS-1$
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }

        sb.append("####################\n");
    }

    if (items[DMESG_LOG]) {
        sb.append(HEADER_SPLIT);
        sb.append("Dmesg " + getString(R.string.log) + ":").append('\n'); //$NON-NLS-1$

        try {
            Process proc = Runtime.getRuntime().exec("dmesg"); //$NON-NLS-1$

            readRawText(sb, proc.getInputStream());
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }

        sb.append("####################\n");
    }

    if (items[LOGCAT_LOG]) {
        sb.append(HEADER_SPLIT);
        sb.append("Logcat " + getString(R.string.log) + ":").append('\n'); //$NON-NLS-1$

        try {
            Process proc = Runtime.getRuntime().exec("logcat -d -v time *:V"); //$NON-NLS-1$

            readRawText(sb, proc.getInputStream());
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }

        sb.append("####################\n");
    }

    return sb.toString();
}

From source file:org.uguess.android.sysinfo.SiragonManager.java

String generateHtmlReport(boolean[] items) {
    StringBuffer sb = new StringBuffer();

    createHtmlHeader(getActivity(), sb, escapeHtml("Android System Report - " + new Date().toLocaleString())); //$NON-NLS-1$

    if (items[BASIC_INFO]) {
        sb.append(openHeaderRow).append(getString(R.string.tab_infoCPU)).append(closeHeaderRow);

        sb.append(openRow).append(getString(R.string.sd_storage)).append(nextColumn4);

        String[] info = getExternalStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {/*ww  w.j a  v a  2  s.com*/
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
        }
        sb.append(closeRow);

        ///////////////////////////UCLIDES//////////////////////////
        sb.append(openHeaderRow).append(getString(R.string.tab_info)).append(closeHeaderRow);

        sb.append(openRow).append(getString(R.string.sd_storage)).append(nextColumn4);

        info = getExternalStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
        }
        sb.append(closeRow);
        ///////////////////////////////////////////////////////////

        sb.append(openRow).append(getString(R.string.a2sd_storage)).append(nextColumn4);

        info = getA2SDStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
        }
        sb.append(closeRow);

        sb.append(openRow).append(getString(R.string.internal_storage)).append(nextColumn4);

        info = getInternalStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
        }
        sb.append(closeRow);

        sb.append(openRow).append(getString(R.string.system_storage)).append(nextColumn4);

        info = getSystemStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
        }
        sb.append(closeRow);

        sb.append(openRow).append(getString(R.string.cache_storage)).append(nextColumn4);

        info = getCacheStorageInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[1]));
        }
        sb.append(closeRow);

        sb.append(openRow).append(getString(R.string.memory)).append(nextColumn4);

        info = getMemInfo();
        if (info == null) {
            sb.append(getString(R.string.info_not_available));
        } else {
            sb.append(getString(R.string.storage_summary, info[0], info[2])
                    + getString(R.string.idle_info, info[1]));
        }
        sb.append(closeRow);

        sb.append(openRow).append(getString(R.string.processor)).append(nextColumn4)
                .append(escapeHtml(getCpuInfo())).append(closeRow);

        String nInfo = getNetAddressInfo();
        sb.append(openRow).append(getString(R.string.net_address)).append(nextColumn4)
                .append(nInfo == null ? getString(R.string.info_not_available) : nInfo).append(closeRow);

        sb.append(emptyRow);

        try {
            File f = new File(F_SCALE_FREQ);
            if (f.exists()) {
                sb.append(openFullRow).append(getString(R.string.sc_freq));

                readRawText(sb, new FileInputStream(f));

                sb.append(closeRow);
            } else {
                sb.append(openFullRow).append(getString(R.string.no_sc_freq_info)).append(closeRow);
            }

            sb.append(emptyRow);

            f = new File(F_CPU_INFO);
            if (f.exists()) {
                readRawHTML(sb, new FileInputStream(f));
            } else {
                sb.append(openFullRow).append(getString(R.string.no_cpu_info)).append(closeRow);
            }

            sb.append(emptyRow);

            f = new File(F_MEM_INFO);
            if (f.exists()) {
                readRawHTML(sb, new FileInputStream(f));
            } else {
                sb.append(openFullRow).append(getString(R.string.no_mem_info)).append(closeRow);
            }

            sb.append(emptyRow);

            f = new File(F_MOUNT_INFO);
            if (f.exists()) {
                readRawHTML(sb, new FileInputStream(f));
            } else {
                sb.append(openFullRow).append(getString(R.string.no_mount_info)).append(closeRow);
            }

            sb.append(emptyRow);
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }
    }

    if (items[APPLICATIONS]) {
        sb.append(openHeaderRow).append(getString(R.string.tab_apps)).append(closeHeaderRow);

        sb.append(openTitleRow).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.pkg_name)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.version)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.app_label)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.flags)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.source)).append("</b>") //$NON-NLS-1$
                .append(closeRow);

        PackageManager pm = getActivity().getPackageManager();
        List<PackageInfo> pkgs = pm.getInstalledPackages(0);

        if (pkgs != null) {
            for (int i = 0, size = pkgs.size(); i < size; i++) {
                PackageInfo pkg = pkgs.get(i);

                sb.append(openRow).append(escapeHtml(pkg.packageName)).append(nextColumn)
                        .append(escapeHtml(pkg.versionName)).append(" (") //$NON-NLS-1$
                        .append(pkg.versionCode).append(')');

                if (pkg.applicationInfo != null) {
                    sb.append(nextColumn).append(escapeHtml(pkg.applicationInfo.loadLabel(pm).toString()))
                            .append(nextColumn).append(pkg.applicationInfo.flags).append(nextColumn)
                            .append(escapeHtml(pkg.applicationInfo.sourceDir));
                }

                sb.append(closeRow);
            }
        }

        sb.append(emptyRow);
    }

    if (items[PROCESSES]) {
        sb.append(openHeaderRow).append(getString(R.string.tab_procs)).append(closeHeaderRow);

        sb.append(openTitleRow).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.importance)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.pid)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.proc_name)).append("</b>") //$NON-NLS-1$
                .append(nextColumn).append("<b>") //$NON-NLS-1$
                .append(getString(R.string.app_label)).append("</b>") //$NON-NLS-1$
                .append(closeRow);

        ActivityManager am = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningAppProcessInfo> procs = am.getRunningAppProcesses();

        if (procs != null) {
            PackageManager pm = getActivity().getPackageManager();

            for (int i = 0, size = procs.size(); i < size; i++) {
                RunningAppProcessInfo proc = procs.get(i);

                sb.append(openRow).append(getImportance(proc)).append(nextColumn).append(proc.pid)
                        .append(nextColumn).append(escapeHtml(proc.processName));

                try {
                    ApplicationInfo ai = pm.getApplicationInfo(proc.processName, 0);

                    if (ai != null) {
                        CharSequence label = pm.getApplicationLabel(ai);

                        if (label != null && !label.equals(proc.processName)) {
                            sb.append(nextColumn).append(escapeHtml(label.toString()));
                        }
                    }
                } catch (NameNotFoundException e) {
                    // ignore this error
                }

                sb.append(closeRow);
            }
        }

        sb.append(emptyRow);
    }

    if (items[NETSTATES]) {
        sb.append(openHeaderRow).append(getString(R.string.tab_netstat)).append(closeHeaderRow);

        try {
            readRawHTML(sb, new FileInputStream("/proc/net/tcp")); //$NON-NLS-1$

            sb.append(emptyRow);

            readRawHTML(sb, new FileInputStream("/proc/net/udp")); //$NON-NLS-1$
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }

        sb.append(emptyRow);
    }

    if (items[DMESG_LOG]) {
        sb.append(openHeaderRow).append("Dmesg " //$NON-NLS-1$
                + getString(R.string.log)).append(closeHeaderRow);

        try {
            Process proc = Runtime.getRuntime().exec("dmesg"); //$NON-NLS-1$

            readRawHTML(sb, proc.getInputStream());
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }

        sb.append(emptyRow);
    }

    if (items[LOGCAT_LOG]) {
        sb.append(openHeaderRow).append("Logcat " //$NON-NLS-1$
                + getString(R.string.log)).append(closeHeaderRow);

        try {
            Process proc = Runtime.getRuntime().exec("logcat -d -v time *:V"); //$NON-NLS-1$

            readRawHTML(sb, proc.getInputStream());
        } catch (Exception e) {
            Log.e(SiragonManager.class.getName(), e.getLocalizedMessage(), e);
        }

        sb.append(emptyRow);
    }

    sb.append("</table></font></body></html>"); //$NON-NLS-1$

    return sb.toString();
}

From source file:com.codename1.impl.android.AndroidImplementation.java

/**
 * @inheritDoc/*w w w.  j  a va 2 s .  c  o  m*/
 */
public String getProperty(String key, String defaultValue) {
    if (key.equalsIgnoreCase("cn1_push_prefix")) {
        /*if(!checkForPermission(Manifest.permission.READ_PHONE_STATE, "This is required to get notifications")){
        return "";
        }*/
        boolean has = hasAndroidMarket();
        if (has) {
            return "gcm";
        }
        return defaultValue;
    }
    if ("OS".equals(key)) {
        return "Android";
    }
    if ("androidId".equals(key)) {
        return Settings.Secure.getString(getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
    }

    if ("cellId".equals(key)) {
        try {
            if (!checkForPermission(Manifest.permission.READ_PHONE_STATE,
                    "This is required to get the cellId")) {
                return defaultValue;
            }
            String serviceName = Context.TELEPHONY_SERVICE;
            TelephonyManager telephonyManager = (TelephonyManager) getContext().getSystemService(serviceName);
            int cellId = ((GsmCellLocation) telephonyManager.getCellLocation()).getCid();
            return "" + cellId;
        } catch (Throwable t) {
            return defaultValue;
        }
    }
    if ("AppName".equals(key)) {

        final PackageManager pm = getContext().getPackageManager();
        ApplicationInfo ai;
        try {
            ai = pm.getApplicationInfo(getContext().getPackageName(), 0);
        } catch (NameNotFoundException e) {
            ai = null;
        }
        String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : null);
        if (applicationName == null) {
            return defaultValue;
        }
        return applicationName;
    }
    if ("AppVersion".equals(key)) {
        try {
            PackageInfo i = getContext().getPackageManager()
                    .getPackageInfo(getContext().getApplicationInfo().packageName, 0);
            return i.versionName;
        } catch (NameNotFoundException ex) {
            ex.printStackTrace();
        }
        return defaultValue;
    }
    if ("Platform".equals(key)) {
        String p = System.getProperty("platform");
        if (p == null) {
            return defaultValue;
        }
        return p;
    }
    if ("User-Agent".equals(key)) {
        String ua = getUserAgent();
        if (ua == null) {
            return defaultValue;
        }
        return ua;
    }
    if ("OSVer".equals(key)) {
        return "" + android.os.Build.VERSION.RELEASE;
    }
    if ("DeviceName".equals(key)) {
        return "" + android.os.Build.MODEL;
    }
    try {
        if ("IMEI".equals(key) || "UDID".equals(key)) {
            if (!checkForPermission(Manifest.permission.READ_PHONE_STATE,
                    "This is required to get the device ID")) {
                return "";
            }
            TelephonyManager tm = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
            String imei = null;
            if (tm != null && tm.getDeviceId() != null) {
                // for phones or 3g tablets
                imei = tm.getDeviceId();
            } else {
                try {
                    imei = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID);
                } catch (Throwable t) {
                    com.codename1.io.Log.e(t);
                }
            }
            return imei;
        }
        if ("MSISDN".equals(key)) {
            if (!checkForPermission(Manifest.permission.READ_PHONE_STATE,
                    "This is required to get the device ID")) {
                return "";
            }
            TelephonyManager tm = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
            return tm.getLine1Number();
        }
    } catch (Throwable t) {
        // will be caused by no permissions.
        return defaultValue;
    }

    if (getActivity() != null) {
        android.content.Intent intent = getActivity().getIntent();
        if (intent != null) {
            Bundle extras = intent.getExtras();
            if (extras != null) {
                String value = extras.getString(key);
                if (value != null) {
                    return value;
                }
            }
        }
    }

    //these keys/values are from the Application Resources (strings values)
    try {
        int id = getContext().getResources().getIdentifier(key, "string",
                getContext().getApplicationInfo().packageName);
        if (id != 0) {
            String val = getContext().getResources().getString(id);
            return val;
        }
    } catch (Exception e) {
    }
    return System.getProperty(key, super.getProperty(key, defaultValue));
}