【Android开发】 获取手机上的各种apk的包名和类名,实现跳转到其他应用

应用装在手机上

情况一:使用Android 调试桥 (adb)

使用数据线连接电脑,并打开 USB 调试,找到你的Android-SDK所在
如我的:“D:\Android\Sdk\platform-tools”
在地址栏输入CMD按回车启动命令行
在这里插入图片描述
在手机上将你需要获取包名和Activity名的应用程序启动,这里我运行QQ
电脑上doc窗口输入:

adb shell dumpsys window | findstr mCurrentFocus

即可查看到当前运行的包名和当前所在的Activity
在这里插入图片描述

情况二:使用Android Studio通过代码获取包名类名

获取应用信息列表:

    private List<ResolveInfo> getResolveInfos(){
        List<ResolveInfo> appList = null;

        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        PackageManager pm = getPackageManager();
        appList = pm.queryIntentActivities(intent, 0);
        Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));

        return appList;
    }

遍历应用列表,打印应用名称,包名,启动的类名:

    private void plintPkgAndCls(List<ResolveInfo> resolveInfos){
        PackageManager packageManager = getPackageManager();

        Log.e("pkg", "####################start######################");
        for (int i = 0; i < resolveInfos.size(); i++) {
            String pkg = resolveInfos.get(i).activityInfo.packageName;
            String cls = resolveInfos.get(i).activityInfo.name;
            String parentActivityName = resolveInfos.get(i).activityInfo.targetActivity;
            String title = null;

            try {
                ApplicationInfo applicationInfo = packageManager.getPackageInfo(pkg, i).applicationInfo;
                title = applicationInfo.loadLabel(packageManager).toString();
            }catch (Exception e){

            }

            Log.i("pkg", title + ":"+pkg+"/"+cls+"/"+parentActivityName);
        }
        Log.e("pkg", "#####################end#######################");
    }

在onCreate中调用函数:

	 plintPkgAndCls(getResolveInfos()); //调用函数打印包名类名

有apk文件包

使用aapt // aapt也是Android-sdk自带的一个工具

准备工作如图,aapt 所在位置及将 .apk 文件复制到同级目录下
在这里插入图片描述

切换到命令行输入命令 (查看 AndroidManifest.xml文件) :

aapt dump xmltree atest.apk AndroidManifest.xml

在这里插入图片描述

当然也可以使用apktool反编译app,不过我没有去研究,这里就不说了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值