如何简单快速获取Android应用包名

如何简单快速获取Android应用包名,第1张

Android 提供了一个API以让应用程序向系统查询包名信息 使用 PackageManager 的 getPackageInfo(javalangString, int)方法Context context;PackageInfo info = contextgetPackageManager()getPackageInfo(contextgetPackageName(), 0); String packageNames = infopackageName;

//获取到栈顶应用程序的包名

public String getTopActivty() {

String topPackageName="888";

//android50以上获取方式

if (BuildVERSIONSDK_INT >= BuildVERSION_CODESLOLLIPOP) {

Intent intent = new Intent(SettingsACTION_USAGE_ACCESS_SETTINGS);

intentsetFlags(IntentFLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(ContextUSAGE_STATS_SERVICE);

long time = SystemcurrentTimeMillis();

List<UsageStats> stats = mUsageStatsManagerqueryUsageStats(UsageStatsManagerINTERVAL_DAILY, time - 1000 10, time);

if (stats != null) {

SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();

for (UsageStats usageStats : stats) {

mySortedMapput(usageStatsgetLastTimeUsed(), usageStats);

}

if (mySortedMap != null && !mySortedMapisEmpty()) {

topPackageName = mySortedMapget(mySortedMaplastKey())getPackageName();

Loge("TopPackage Name", topPackageName);

}

}

}

//android50以下获取方式

else{

List<ActivityManagerRunningTaskInfo> tasks = activityManagergetRunningTasks(1);

ActivityManagerRunningTaskInfo taskInfo = tasksget(0);

topPackageName = taskInfotopActivitygetPackageName();

}

return topPackageName;

}

用命令方获取:

Aapt dumpbadging xxxxapk

第一个框为包名

第二个框为主Activity名

如果取包名与Activity在命令行中不方例还可以用以下方式获取

Aapt dumpbadging xxxxapk >c:\apktxt

之后打开c:\apktxt!

PackageManager manager = thisgetPackageManager();

PackageInfo info = managergetPackageInfo(thisgetPackageName(), 0);

infopackageName就是包名

可以使用以下代码来获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名。

import javaioFile;

import javalangreflectMethod;

public class LoopApp {

public static void main(String[] args) throws Exception {

String packageName = "";

File root = new File(SystemgetProperty("userdir") + "\\src");

loop(root, packageName);

}

public static void loop(File folder, String packageName) throws Exception {

File[] files = folderlistFiles();

for (int fileIndex = 0; fileIndex < fileslength; fileIndex++) {

File file = files[fileIndex];

if (fileisDirectory()) {

loop(file, packageName + filegetName() + "");

} else {

listMethodNames(filegetName(), packageName);

}

}

}

public static void listMethodNames(String filename, String packageName) {

try {

String name = filenamesubstring(0, filenamelength() - 5);

Object obj = ClassforName(packageName + name);

Method[] methods = objgetClass()getDeclaredMethods();

Systemoutprintln(filename);

for (int i = 0; i < methodslength; i++) {

Systemoutprintln("\t" + methods[i]getName());

}

} catch (Exception e) {

Systemoutprintln("exception = " + egetLocalizedMessage());

}

}

}

String packageName = AclassgetPackage()getName();

或者:

packageName = new A()getClass()getPackeage()getName();

即可获得包名了。

以上就是关于如何简单快速获取Android应用包名全部的内容,包括:如何简单快速获取Android应用包名、android5.0之后,如何获取当前顶端包名、如何获取app 的包名和activity 名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9757927.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存