1.我找了很多方法,以下是
public String getTopActivityPackageName(Context context) { String topActivityPackage = null; ActivityManager activityManager = (ActivityManager) (context .getSystemService(android.content.Context.ACTIVITY_SERVICE)); List<RunningTaskInfo> runningTaskInfos = activityManager .getRunningTasks(1); if (runningTaskInfos != null) { ComponentName f = runningTaskInfos.get(0).topActivity; topActivityPackage = f.getPackageName(); } return topActivityPackage; }
到了断网,获取出来的就是launcher ,我去,我要的是我自己app的top acticity,这个拿到我没法用。
之后就是
之后
之后
就可以了 ,问题是 这个要跑到设置里面,用户自己设置,这个很烦的。
***********************************************我自己的方法了****************************************************************
在Application的onCreat中添加:
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { topActivity=activity.getClass().getName(); } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } });我想要的是类名,因为 我的程序里面要判断是否是top activity,所以我这里是String,如果你是activity,你看到了,这里也是有activity的。
在application中添加方法:
public boolean isTopActivity(String TAG){ if(TextUtils.isEmpty(topActivity)) return false; return topActivity.contains(TAG); }
大功告成。
文章来源: 获取最顶端的Top Activity和类名