需要知道哪个软件包创建/恢复了我的活动

问题描述

| 我有一个使用密码保护的应用程序。因此,我希望密码对话框显示在我对任何活动的onResume的所有调用上。事实是,在我自己的应用程序中导航时,我不希望显示密码对话框。 因此,我想知道应用程序是从应用程序内部还是外部输入的。做到这一点的最佳方法是什么? 我现在唯一的想法是使用getCallingActivity方法并检查它是否包含我的程序包名称。问题是它迫使我使用startActivityForResult()而不是startActivity(),这很痛苦,因为我需要搜索所有代码并进行更改。     

解决方法

        使用Android权限系统,您的受保护活动可能需要权限才能启动。该权限将在清单中定义,并定义为要求授予相同的程序包签名。 最终用户开始的活动将是执行密码验证的活动;一旦满意,它将开始您的受保护活动。尝试通过非您自己的软件包启动受保护的活动将失败。     ,        从内部代码中,您可以为Intent提供一个额外的字段,用于启动Activity。在启动的活动中,检查此额外字段是否存在,如果存在,您知道活动是由内部代码启动的。