1. 程式人生 > >Android 在Android手機上獲取其他應用的包名及版本號

Android 在Android手機上獲取其他應用的包名及版本號

string android手機 app名 fin 產品 logo 信息 led 直接

獲取Android手機上其他應用的包名及版本號方法有很多,可以通過AAPT從APK包中直接獲取,也可以通過代碼在手機上獲取。顯然,對於產品或者用戶來說要獲取這些信息,在手機上獲取更為簡便。

下面我們來看下如何在手機上獲取其他應用的包名、版本號。

核心:通過PackageManager可以獲取到我們想要的信息,例如:程序圖標、程序名稱、包名、VersionName、VersionCode等。

/*
     * @Author Sun Ruichuan
     * 
     * */
    
    public ArrayList<HashMap<String, Object>> getItems(Context context) {

        PackageManager pckMan 
= context.getPackageManager(); ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>(); List<PackageInfo> packageInfo = pckMan.getInstalledPackages(0); for (PackageInfo pInfo : packageInfo) { HashMap
<String, Object> item = new HashMap<String, Object>(); item.put("appimage", pInfo.applicationInfo.loadIcon(pckMan)); item.put("packageName", pInfo.packageName); item.put("versionCode", pInfo.versionCode); item.put("versionName", pInfo.versionName); item.put(
"appName", pInfo.applicationInfo.loadLabel(pckMan).toString()); items.add(item); } return items; }

在獲取到所需要的信息後即可將這些信息放入到自定義的ListAdaptar裏。

class MyAdapter extends BaseAdapter {

        public class Holder {
            TextView tv_pakagename;
            TextView tv_versioncode;
            TextView tv_versionname;
            TextView tv_appname;
            ImageView iv_logo;
        }

        @Override
        public int getCount() {
            return allProcess.size();
        }

        @Override
        public HashMap<String, Object> getItem(int position) {
            return allProcess.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            Holder holder;
            View v;

            if (convertView == null) {
                holder = new Holder();
                v = LayoutInflater.from(getApplicationContext()).inflate(
                        R.layout.list_menu, null);

                holder.tv_pakagename = (TextView) v
                        .findViewById(R.id.tv_pakagename);
                holder.tv_versioncode = (TextView) v
                        .findViewById(R.id.tv_versioncode);
                holder.tv_versionname = (TextView) v
                        .findViewById(R.id.tv_versionname);
                holder.iv_logo = (ImageView) v.findViewById(R.id.iv_logo);
                holder.tv_appname = (TextView) v.findViewById(R.id.tv_appname);
                v.setTag(holder);
            } else {
                v = convertView;
                holder = (Holder) v.getTag();
            }

            holder.tv_pakagename.setText("包名:"
                    + allProcess.get(position).get("packageName").toString());
            holder.tv_versioncode.setText("VersionCode:"
                    + allProcess.get(position).get("versionCode").toString());
            holder.tv_versionname.setText("VersionName:"
                    + allProcess.get(position).get("versionName").toString());
            holder.iv_logo.setImageDrawable((Drawable) allProcess.get(position)
                    .get("appimage"));
            holder.tv_appname.setText("App名稱:"
                    + allProcess.get(position).get("appName").toString());

            return v;
        }

    }

這樣就完成了相應的工作。

Android 在Android手機上獲取其他應用的包名及版本號