需要知道创建/恢复我的活动的包

时间:2011-06-15 16:46:13

标签: android android-activity

我有一个使用密码保护的应用程序。因此,我希望密码对话框显示我对任何活动的onResume的所有调用。问题是我不想在我自己的应用程序内导航时显示密码对话框。

所以,我想知道应用程序是从应用程序内部还是外部输入的。实现这一目标的最佳方法是什么?

我现在唯一的想法是使用getCallingActivity方法并检查它是否包含我的包名。这个问题是它迫使我使用startActivityForResult()而不仅仅是startActivity(),因为我需要搜索所有代码并改变它。

2 个答案:

答案 0 :(得分:0)

从内部代码中,您可以为用于启动Activity的Intent提供额外的字段。在已启动的Activity中,检查是否存在此额外字段,如果存在,则表示活动是由内部代码启动的。

答案 1 :(得分:0)

使用Android权限系统,您的受保护活动可能需要权限才能启动。该权限将在您的清单中定义,并且将被定义为要求授予相同的包签名。

最终用户启动的活动将是执行密码验证的活动;一旦它满意,它将启动您的受保护活动。尝试通过非自己的软件包启动受保护的活动将失败。