如何简单快速获取Android应用包名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何简单快速获取Android应用包名相关的知识,希望对你有一定的参考价值。

如果是要获得手机上的已安装的APP的包名,那么请下载包名查看器软件,直接可以查看.

现在要说的是有一个APP安装包,获取包名的方法:(需要安装NotePad++)

    将安装包后缀.apk改为.zip(.rar)

    双击打开解压包,找到androidManifest.xml,将它单独解压出来即可

    将这个文件单独解压出来后,使用NotePad++打开,查找"manifest",跟着它后面的就是包名.(查找"activity",跟着它后面的就是活动名)

如果没有NotePad++也可以尝试在线查看xml文件,查找manifest关键字

参考技术A 一、
先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root)。
①在android设备上点击一下你要测试的应用,然后就不用操作设备了。
②在PC上的命令行输入:adb logcat>D:/log.txt *:I
在这里的D:/log.txt你可以改成其他的路径,但是一定要先确保路径下没有这个文件,不然的话你以前的文件就被改掉了,一定要小心。
③按下Ctrl+c先停掉(为了避免过多的新信息)。打开刚刚的那个文件D:/log.txt。从文件最下面开始找下面格式的信息
I/ActivityManager( 数字): Displayed 包名/类名: +数字ms
例如我的信息如下:
I/ActivityManager( 272): Displayed com.vane/.act.ActLauncher: +315ms
不过你可能会发现有很多这种格式的信息,到底哪个才是你需要的呢,如果你严格按照刚刚的步骤做的话,那么很可能是最下面那条信息,即使不是那么也肯定是最下面几条信息中的某一条,这需要你根据应用进行辨别。

二、使用aapt工具
cmd中进入到aapt所在目录,输入
aapt dump badging 包绝对路径
就可以看到包名和权限等信息了

Android 在Android手机上获取其他应用的包名及版本号

获取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 在Android手机上获取其他应用的包名及版本号

android 性能测试adb命令

如何在Android中获取库的包名?

如何从android中的包名中获取类名?

如何在android中获取Fragment的包名(不是Activity的)[重复]