_安以轩 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 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器