博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917
最近要定制个Launcher,最后选择了 Launcher3,要在4.4上跑,掉坑里去了,太深 :sob:
首先在桌面上要显示一些应用的快捷方式,小部件之类的,这就需要知道他们的包名
和入口 Activity
.
这个有以下几种方式:
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,包含如下过滤信息:
"android.intent.action.MAIN" />
"android.intent.category.LAUNCHER" />
因此可以根据这个来获取包名和入口 Activity,具体代码在后面,请稍等。。。
这个必须获取到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.bat d ***.apk
之后找到AndroidManifest.xml文件,后面你们都知道了,搞定。
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List 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 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
分享是一种美德,更是一种生活方式!!
也许你会说我是一个梦想者,但我不是唯一的一个。
悦分享,越快乐^_^
欢迎交流,转载请注明出处,谢谢!