Android 如何知道以前的活动是否来自我的应用程序?

Android 如何知道以前的活动是否来自我的应用程序?,android,android-activity,Android,Android Activity,我如何知道以前的活动导航到当前的活动是否属于我的应用程序?意思是最后一个屏幕是我的应用程序的一部分/写在我的清单文件中,还是它是一个主屏幕,或者可能是一个调用屏幕 有没有一种方法可以在不通过Intent传递信息的情况下知道这一点 谢谢。试试这个 我想你可以通过检查你的应用程序的包名和你在这里导航的活动的包名来检查这一点 我们可以从活动堆栈中获取包名previous activity ActivityManager am = (ActivityManager) context.getSystemS

我如何知道以前的
活动
导航到当前的
活动
是否属于我的应用程序?意思是最后一个屏幕是我的应用程序的一部分/写在我的清单文件中,还是它是一个主屏幕,或者可能是一个调用屏幕

有没有一种方法可以在不通过
Intent
传递信息的情况下知道这一点

谢谢。

试试这个

我想你可以通过检查你的应用程序的包名和你在这里导航的活动的包名来检查这一点

我们可以从活动堆栈中获取包名previous activity

ActivityManager am = (ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);
在这里您将获得您的包裹名称

String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();

String className = am.getRunningTasks(1).get(0).topActivity.getClassName();
然后像这样获取您当前的包名

String currentpackage = getApplicationContext().getPackageName();
检查两个包是否相同

i、 e

它使用清单中的权限

<uses-permission android:name="android.permission.GET_TASKS" />


我希望这能帮助你

我没有足够的声誉对答案发表评论,但出于某种原因,我能够回答问题。我想情况会相反:S(我是新来的)

为了借鉴他的答案,我也在寻找之前的活动,而不是当前的活动。要回答客户的评论,请执行以下操作:

topActivity始终来自当前包(如果它不是服务 等等)。你有没有一个不是这样的例子?即顶部 RunningTask(0)。topActivity为您提供当前活动,而不是以前的活动 一

简单更改:

String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();


您可能可以使用ActivityManager获取正在运行的任务列表,但这需要“获取任务”权限,除非您的应用程序具有与管理任务相关的某些明显功能,否则用户会发现您请求此权限很奇怪。为什么您需要知道最后一个屏幕是否属于您?实际上有3种选择:从主页、呼叫屏幕或搜索,不是吗?
topActivity
始终来自当前软件包(如果不是服务等)。你有没有一个不是这样的例子?例如,top RunningTask(0)。topActivity为您提供当前活动,而不是上一个活动。
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();
String packageName = am.getRunningTasks(2).get(1).topActivity.getPackageName();
String className = am.getRunningTasks(2).get(1).topActivity.getClassName();