从其他一些活动中获取呼叫活动

Far*_*ukh 6 android android-activity

我通过以下代码调用另一个活动的活动:

Intent intent = new Intent(context, mClass);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

以及由此代码启动的新活动.我想知道哪个活动开始此活动.我为此目的使用了这段代码

Intent intent = getIntent();
Class<?> c = intent.getClass();
if (c != OffersActivity.class) {
    prepareForNotifications();
    setListAdapter();
}
Run Code Online (Sandbox Code Playgroud)

但是通过这段代码,我无法获得启动此活动的类名.我真的需要一些帮助.

谢谢

the*_*jon 12

有一种方法getCallingActivity(),但只有在调用活动调用您时才有效startActivityForResult().我见过图书馆使用它并说你必须这样称呼它们,但坦率地说这有点令人讨厌.简单的答案是你不应该知道.Android是一个松散耦合的活动系统,因此调用活动对您的活动没有任何实际意义.你的活动需要的任何信息都应该明确地放在意图中,所以如果你真的想知道谁给你打电话,那么打电话的人就需要把这些额外的东西放进去.你当然不能说出他们是不是在撒谎,所以不要不要尝试将此用于与安全相关的任何事情.但是,我建议无论你根据调用者确定什么,调用者都应该通过你.可能是时候重新考虑你为什么要这样做,因为试图对抗系统只会导致痛苦.


Alé*_*lho 1

也许最好在调用它们时在 Intent 中使用额外参数...例如:在调用者活动上使用Intent.putExtra(PARAM,value) ...以及在您检查的打开的活动上:

意图.getStringExtra(PARAM)