应用装在手机上
情况一:使用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