
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 名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)