「java获取当前应用包名」获取包名下的所有类
本篇文章给大家谈谈java获取当前应用包名,以及获取包名下的所有类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名
- 2、利用java反射机制,通过一个对象获得完整的包名和类名
- 3、怎么通过java来获得当前电脑运行的软件的名字
- 4、怎样获取应用的包名和类名及解析aapt
- 5、java怎么用代码获取类所在的包名
- 6、需要在java环境下取得apk应用程序名
java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名
可以使用以下代码来获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名。
import java.io.File;
import java.lang.reflect.Method;
public class LoopApp {
public static void main(String[] args) throws Exception {
String packageName = "";
File root = new File(System.getProperty("user.dir") + "\\src");
loop(root, packageName);
}
public static void loop(File folder, String packageName) throws Exception {
File[] files = folder.listFiles();
for (int fileIndex = 0; fileIndex files.length; fileIndex++) {
File file = files[fileIndex];
if (file.isDirectory()) {
loop(file, packageName + file.getName() + ".");
} else {
listMethodNames(file.getName(), packageName);
}
}
}
public static void listMethodNames(String filename, String packageName) {
try {
String name = filename.substring(0, filename.length() - 5);
Object obj = Class.forName(packageName + name);
Method[] methods = obj.getClass().getDeclaredMethods();
System.out.println(filename);
for (int i = 0; i methods.length; i++) {
System.out.println("\t" + methods[i].getName());
}
} catch (Exception e) {
System.out.println("exception = " + e.getLocalizedMessage());
}
}
}
利用java反射机制,通过一个对象获得完整的包名和类名
1、Test t = new Test().Class clazz = t.getClass().System.out.println(clazz.getCanonicalName()).System.out.println(clazz.getSimpleName()).
2、public class TestReflect {public static void main(String[] args) throws Exception {TestReflect testReflect = new TestReflect().System.out.println(testReflect.getClass().getName()).// 结果 net.xsoftlab.baike.TestReflect.}}
3、Java程序
怎么通过java来获得当前电脑运行的软件的名字
是不是获取当前进程然后找出软件名称
//列出当前系统所有进程
public static void main(String[] args) {
BufferedReader br = null;
try {
Process proc = Runtime.getRuntime().exec("tasklist");
br = new BufferedReader(
new InputStreamReader(proc.getInputStream()));
System.out.println("Process info:");
String line;
while ((line = br.readLine()) != null) {
System.out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
获取系统相关的可参考一下
怎样获取应用的包名和类名及解析aapt
原理:
通过查看AndroidManifest.xml
方法:
可以通过如下方法获得:
1.aapt
aapt dump xmltree apk路径 AndroidManifest.xml 输入的路径
2.apktool 反编译
apktool d -f apk路径 输出的路径
3.monkey---Android自带的工具
adb shell monkey --port 1080 -v -v
aapt即 Android Asset Packaging Tool
该工具在SDK/tools目录下,如果你没有设置环境变量,那需要进入该目录下才能运行aapt命令,如果设置了环境变量则可以在任何目录下运行aapt命令了。
1、列出压缩文件目录
aapt l[ist] [-v] [-a] file.{zip,jar,apk}
参数:
-v:会以table的形式输出目录,table的表目有:Length、Method、Size、Ratio、Date、Time、CRC-32、Name。其中Method表示压缩形式,有Deflate和Stored两种,即该Zip目录采用的算法是压缩模式还是存储模式;Ratio表示压缩率。
-a:会详细输出所有目录的内容。
2、查看APK的相关信息
aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
badging Print the label and icon for the app declared in APK.
permissions Print the permissions from the APK.
resources Print the resource table from the APK.
configurations Print the configurations in the APK.
xmltree Print the compiled xmls in the given assets.
xmlstrings Print the strings of the given compiled xml assets.
1)、查看APK包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息
aapt dump badging file.apk
2)、查看权限
aapt dump permissions file.apk
3)、查看资源列表
aapt dump resources file.apk
把查看信息保存到文件中去可以使用:
aapt dump resources file_path.apk sodino.txt
4)、查看APK配置信息
aapt dump configurations file_path.apk
5)、查看指定APK的指定XML文件
aapt dump xmltree file_path.apk res/***.xml
以树形结构输出的xml信息。
aapt dump xmlstrings file_path.apk res/***.xml
输出xml文件中所有的字符串信息。
3、编译android资源
aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
[--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
[--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
[--rename-manifest-package PACKAGE] \
[--rename-instrumentation-target-package PACKAGE] \
[--utf16] [--auto-add-overlay] \
[--max-res-version VAL] \
[-I base-package [-I base-package ...]] \
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file
\
[-S resource-sources [-S resource-sources ...]] \
[-F apk-file] [-J R-file-dir] \
[--product product1,product2,...] \
[-c CONFIGS] [--preferred-configurations CONFIGS] \
[-o] \
[raw-files-dir [raw-files-dir] ...]
Package the android resources. It will read assets and resources that are
supplied with the -M -A -S or raw-files-dir arguments. The -J -P -F and -R
options control which files are output.
部分参数解释:
-f:如果编译出来的文件已经存在,强制覆盖;
-m:使生成的包的目录放在-J参数指定的目录;
-J:指定生成的R.Java的输出目录;
-S:res文件夹路径;
-A:assert文件夹的路径;
-M:AndroidManifest.xml的路径;
-l:某个版本平台的android.jar的路径;
-F:具体指定APK文件的输出
1)、将工程的资源编译出R.java文件
aapt package –m –J R.java目录 -S res目录 -l android.jar目录 -M
AndroidManifest.xml目录
2)、将工程的资源编译到一个包里
aapt package –f –S res目录 -l android.jar目录 -A assert目录 -M
AndroidManifest.xml目录 -F 输出的包目录
4、打包好的APK中移除文件
aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
5、添加文件到打包好的APK中
aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
6、显示aapt的版本
aapt v[ersion]
java怎么用代码获取类所在的包名
A.class.getPackage().getName();
上面这个代码就是获取类A的包的全名的,如果你类A首行写着“package
com.xxx.demo”,哪那么你用上面的代码就会获取到package
com.xxx.demo
需要在java环境下取得apk应用程序名
这个很简单,你需要使用PackageManager,你查看这个类,就知道怎么获取Android手机里所有的应用程序的应用名称了,我的程序在linux里,若你查找了 还没搞定我可以给你一段代码.
// 获取packageManager对象
PackageManager packageManager = this.getPackageManager();
/*getInstalledApplications 返回当前设备上安装的应用包集合
* ApplicationInfo对应着androidManifest.xml中的application标签。通过它可以获取该application对应的信息
*/
ListApplicationInfo applicationInfos = packageManager.getInstalledApplications(0);
以上是主要代码
applicationInfos里的是ApplicationInfo类,ApplicationInfo applicationInfo = applicationInfos.get(i);
String packageName = applicationInfo.packageName;// 包名
String packageLabel = packageManager.getApplicationLabel(applicationInfo).toString();
packageLabel 这个就是应用程序名称
java获取当前应用包名的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于获取包名下的所有类、java获取当前应用包名的信息别忘了在本站进行查找喔。
发布于:2022-12-11,除非注明,否则均为
原创文章,转载请注明出处。