博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

最近要定制个Launcher,最后选择了 Launcher3,要在4.4上跑,掉坑里去了,太深 :sob:

首先在桌面上要显示一些应用的快捷方式,小部件之类的,这就需要知道他们的包名入口 Activity.

获取应用包名


  • adb 命令获取

这个有以下几种方式:

1 经常用R.E管理器的同学,应该知道在系统/data/data目录下存着该手机所有的应用数据,并且是以包名为文件夹命名的,so直接ls查看就可以了

adb shell //进入系统终端
cd /data/data && ls

window用户找不到adb命令的,请把adb目录加入到环境变量里。

请看:

我的终端是git带的,还不错的。

2 包管理器pm获取

adb shell
pm list package
pm list package -f//显示的更详细些

请看:

  • 代码获取

我们都知道,开发的安卓app的AndroidManifest.xml文件里有一个起始 Activity,包含如下过滤信息:

<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

因此可以根据这个来获取包名和入口 Activity,具体代码在后面,请稍等。。。

获取应用的入口 Activity

  • aapt工具

这个必须获取到app才能继续,可以通过Android Device Monitor工具,pull到桌面,(直接adb pull 出现问题,搞不懂)然后进行下面,可以同时获取包名和入口 Activity

aapt dump badging ***.apk

找不到的,把该工具加入环境变量,我的在这里:D:\Android\Sdk\build-tools\23.0.2

请看:

网上找了个脚本,我放到了这个 Gist, Come on, boy.

运行脚本,搞掂,这样:

  • 反编译工具apktool
apktool.bat d ***.apk

之后找到AndroidManifest.xml文件,后面你们都知道了,搞定。

  • 代码获取
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);List<ResolveInfo> packageInfos = getPackageManager().queryIntentActivities(intent, 0);for (int i = 0; i < packageInfos.size(); i++) {String launcherActivityName = packageInfos.get(i).activityInfo.name;String packageName = packageInfos.get(i).activityInfo.packageName;Log.i("appappinfo", i + " -- launcherActivityName: " + launcherActivityName);Log.e("appappinfo", i + " -- packageName: " + packageName);
}

好了,这样就搞掂,enjoy。

获取小部件包名和类名


  • 代码实现
List<AppWidgetProviderInfo> widgetProviderInfos = AppWidgetManager.getInstance(this).getInstalledProviders();Log.d("widget", "allWidgetSize = " + widgetProviderInfos.size());
for (int i = 0; i < widgetProviderInfos.size(); i++) {AppWidgetProviderInfo info = widgetProviderInfos.get(i);String packageName = info.provider.getPackageName();    //获取包名String className = info.provider.getClassName();        //获取类名Log.d("widget", "packageName: " + packageName);Log.d("widget", "className: " + className);
}

根据包名打开该应用


    public static void openApp(Context context,String packageName) throws Exception{Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);context.startActivity(intent);}

That’ all.

最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!

神奇的安卓开发网站:http://androidcat.com/

安卓开源库收集整理:https://github.com/XXApple/AndroidLibs

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

获取安卓应用包名和入口 Activity相关推荐

  1. 如何获取Android的apk的包名及其入口

    0. 前提 已经配置好adb环境,没配置好的话可以参考博客配置adb环境变量配置一下. 1. 通过.apk获取APP的包名和Activity 1.1 找到aapt文件 资源管理器搜索栏输入%ANDRO ...

  2. 获取android com包名,Android系统中获取进程(和顶端包名)

    概要: android L前我们可以使用 getRunningTasks(int maxNum) maxNum int: The maxNumnumber of entries to return i ...

  3. java 获取apk版本号_纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限...

    [实例简介] 纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限... 代码讲解地址:http://blog.csdn.net/chillax_li/article/details/4185 ...

  4. java—使用反射对类进行操作(Class对象获取类名,包名,父类,接口,构造方法,普通方法,属性)

    (一)Class对象获取类名,包名,父类,接口 前提条件: 有两个接口IMessage,SystemEdition 一个父类Father 一个子类Son继承父类,实现两个接口IMessage,Syst ...

  5. 快速获取Android应用包名和Activity名

    一.获取包名 方法1: 先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root). ①在android设备上点 ...

  6. 怎么获取apk的包名??

    本文转载自http://www.cnblogs.com/by-dream/p/5157308.html 如何知道一个App的包名呢?它的启动页的Activity又是什么呢? 包名(Package na ...

  7. mac获取ios应用包名

    win+空格键 打开mac聚焦搜索,搜索console,打开mac自带的控制台 启动要查询的App包名,在右上角搜索 submitting 在下面就可以看到一些相关信息,在里面找包名就可以

  8. 安卓修改包名和Project

    注意:默认是文件夹名已经修改了 1. 步骤一:修改包名 1.1 修改package名称 1.2 修改AndroidManifest.xml的包名(可能在上一步自动修改) 2.修改setting.gra ...

  9. php aapt apk 包名,aapt 命令可应用于查看apk包名、主activity、版本等很多信息

    List contents of Zip-compatible archive. 1.1 列出压缩文件目录 aapt l 参数: -v:会以table的形式输出目录,table的表目有:Length. ...

最新文章

  1. java 双向链表例子_Java双向链表按照顺序添加节点的方法实例_Java_软件编程
  2. next() 与 nextLine() 区别
  3. 三面求对称二叉树_字节跳动后端实习面经,一面+二面+三面(已收到offer)
  4. PYTHON-进阶-编码处理小结
  5. python try else多余的设计_在python中利用try..except来代替if..else的用法
  6. Eclipse 插件管理
  7. Bex5常用方法总结
  8. opencv 运动检测 三帧差法
  9. ViewPage2+TabLayout小记
  10. 送小公主——哆啦A梦(Python代码实现)
  11. 回顾外滩踩踏事件,吸取的教训
  12. 51单片机流水灯制作
  13. 写给你看的Python Web 岗位分析,求职必备
  14. 购买计算机如何选择CPU,怎么选购笔记本电脑CPU 选购笔记本电脑CPU方法【详解】...
  15. electron 打包后启动应用报错:Error: ENOENT: no such file or directory, open ‘xxx/manifest.json‘‘
  16. Java 从lambda 表达式引用的本地变量必须是最终变量或实际上的最终变量问题解决
  17. docker重启后启动失败Failed to start Docker Application Container Engine.
  18. P4995 跳跳! java 洛谷
  19. php调用python pkl_Python中的Pickle操作(pkl文件解释)
  20. 机器学习笔记之受限玻尔兹曼机(四)推断任务——边缘概率

热门文章

  1. 如何使用微信公众号做营销
  2. MyBatis插件:通用mapper的配置和应用
  3. 教育大数据应用技术国家工程实验室正式启动
  4. 2.22 ACM模拟赛总结
  5. warning: statement has no effect [-Wunused-value]
  6. 二分图的Hall定理
  7. 基于VC++和QT实现的图的可视化工具
  8. sql的介绍——SQL Server数据库管理系统
  9. python中箭头是什么意思_python流程框里面的箭头是什么意思
  10. python工程监理_1.工程监理招标属于()