_安以轩 2015-06-05 06:46 采纳率: 0%
浏览 19034

android 5.0之后如何获取当前运行的应用包名?

1,先看看android5.0之前的获取方法:

// 1、得到当前运行的任务栈,参数就是得到多少个任务栈,1就是只拿一个任务栈
// 对应的也就是正在运行的任务栈啦 ,注意别忘了在清单文件中添加获取的权限
List runTaskInfos =
activityManager.getRunningTasks(1);
//拿到当前运行的任务栈
ActivityManager.RunningTaskInfo runningTaskInfo = runTaskInfos.get(0);
//拿到要运行的Activity的包名
runningpackageName = runningTaskInfo.baseActivity.getPackageName();

2,但是5.0之后这个方法失效了。搜索到如下解决方法:
public static String getCurrentPkgName(Context context) {
ActivityManager.RunningAppProcessInfo currentInfo = null;
Field field = null;
int START_TASK_TO_FRONT = 2;
String pkgName = null;
try {
field = ActivityManager.RunningAppProcessInfo.class.getDeclaredField("processState");
} catch (Exception e) { e.printStackTrace(); }
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List appList = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo app : appList) {
if (app.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
Integer state = null;
try {
state = field.getInt( app );
} catch (Exception e) { e.printStackTrace(); }
if (state != null && state == START_TASK_TO_FRONT) {
currentInfo = app;
break;
}
}
}
if (currentInfo != null) {
pkgName = currentInfo.processName;
}
return pkgName;
}

3,然而上面的方法是得到却是当前Activity的进程名,一般进程名就是包名,但是如果在Manifest设置Activity的进程名,上面方法就无效了,如:

android:name="com.xxx.demo.DemoActivity"
android:process=".aaa" />

Log.d(TAG, "当前包名:" + runningpackageName );
06-05 11:09:44.284 32215-32276/com.xxx.demo D/AppService﹕ 当前包名:.aaa

4,除了上面获取方法,,求android 5.0之后获取当前运行的activity的包名的方法。

  • 写回答

14条回答

  • LogicTeamLeader 2015-06-05 11:58
    关注

    你想得到什么包名,是本app的包名么?直接在Activity中

     this.getPackageName();
    
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建