android获取其他应用信息

android获取包名的几种方法

  • dumpsys activity 获取包名和MainActivity

adb shell dumpsys activity activities

先启动需要的查找的apk,再敲入以上命令,在stack #1下查找cmp=,其后的内容为包名/MainActivity

intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.oray.sunlogin.service/com.oray.sunlogin.application.Main}

注:dumpsys activity可以查看系统的所有的活动,包括服务、广播等,加上activities则只返回栈上的activity。

 

  • dumpsys window获取当前显示的包名和activity

adb shell dumpsys window w | findstr \/ | findstr name=

先打开需要查找的apk后,再敲入以上命令

  备注:此方法获取当前显示的包名和activity,不一定是MainActivity。

 

  • Logcat

C:\Users\Administrator>adb shell
root@msm8916_32_512:/ # logcat | grep android.intent.category.LAUNCHER

root@msm8916_32_512:/ # logcat | grep START

 

  • pm获取包名

adb shell pm list package -f

将获取手机内所有apk对应的包名和路径

 

  • 使用aapt    

//aapt是sdk自带的一个工具,在sdk\builds-tools\目录下
1.以QQ音乐为例,命令行中切换到aapt.exe目录执行:aapt dump badging C:\Users\Administrator\Desktop\QQyinle_155.apk
2.运行后的结果中以下两行分别是应用包名package和入口activity名称
package: name='com.tencent.qqmusic'
launchable-activity: name='com.tencent.qqmusic.activity.AppStarterActivity'

 

  • 查看AndroidManifest.xml

1.使用apktool反编译app:apktool d QQyinle_155.apk E:\apk\QQYinyue
2.打开AndroidManifest.xml
manifest节点的package属性值是应用的包名:<manifest package=”com.estrongs.android.pop”>
查找android.intent.action.MAIN和android.intent.category.LAUNCHER对应的activity,该activity对应的android:name属性既是入口activity名称,
android.intent.action.MAIN决定应用程序最先启动的Activity
android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

 

 

  • 通过程序获取:

        try {            
            PackageManager packageManager = this.getPackageManager();   //获取系统包管理器
            List<ApplicationInfo> listAppInfo = packageManager.getInstalledApplications(0);     
            //获取已安装APP信息,此时lispAppInfo列表中已包含所用应用的包名,依据需求查看或赋值,如:
            String packName = "com.oray.sunlogin.service";      //从列表中获取到的信息,此为调试模式时,在listAppInfo获得的包名
            
            //依据包名获取MainActivity
            String resolveMainActivityName = "com.oray.sunlogin.application.Main";      //默认赋值      
            PackageInfo pi = this.getPackageManager().getPackageInfo(packName,0);
            Intent resolveIntent = new Intent(Intent.ACTION_MAIN);
            resolveIntent.setPackage(packName);
            resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(resolveIntent,0);
            //MainActivity只有一个,所以此时list中应该只有1项
            if(resolveInfos != null && resolveInfos.size() >= 1)
            {
                resolveMainActivityName = resolveInfos.get(0).activityInfo.name;
                Log.d("MAIN",resolveMainActivityName);
            }

            //启动刚获取到app
            if(!resolveMainActivityName.isEmpty())
            {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_LAUNCHER);
                ComponentName cn = new ComponentName(packName,resolveMainActivityName);
                intent.setComponent(cn);
                startActivity(intent);
            }
            
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值