如何知道以前的活动是否来自我的申请?

时间:2013-03-31 21:16:48

标签: android android-activity

我怎么知道我导航到当前Activity之前的Activity是否属于我的应用程序?意思是最后一个屏幕是我的应用程序的一部分/写在我的清单文件中,还是一个主屏幕或者一个电话屏幕?

有没有办法知道没有通过Intent传递信息?

感谢。

2 个答案:

答案 0 :(得分:1)

我没有足够的声誉对答案发表评论,但出于某种原因,我能够回答问题。我认为这将是另一种方式:S(我是新来的)

为了回顾Pragnani的答案,我也在寻找之前的活动而不是现在的活动。要回答Alexander Malakhov的评论:

  

topActivity始终来自当前包(如果它不是服务   等等)。如果不是这样的话,你有一个例子吗?即最佳   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();

答案 1 :(得分:-1)

试试这个

我认为您可以通过使用您在此处导航的活动的包名称检查应用的包名称来检查

我们可以从活动堆栈中获取包名称以前的活动

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();

检查两个包是否相同

  if(packageName.equals(currentpackage))
       {
        Toast.makeText(context,"Same Application package",1).show();
       }

它使用清单

中的权限
<uses-permission android:name="android.permission.GET_TASKS" />

我希望这会对你有所帮助