【问题标题】:The identity of the application receiving implicit intent?接收隐式意图的应用程序的身份?
【发布时间】:2011-12-28 00:05:52
【问题描述】:

我想知道是否有任何方法可以以编程方式获取接收到我自己的应用程序发送的隐式意图的应用程序(或组件)的身份(名称)。

假设应用程序 A 通过操作 SEND-SMS 发送一个隐式意图。是否可以让 A 知道该操作启动了哪个应用程序?

非常感谢。

【问题讨论】:

    标签: android permissions android-intent implicit


    【解决方案1】:

    如果您使用的是startActivity(),则不需要。

    但是,你有一个解决方法

    • 使用queryIntentActivities() 确定可以为某个意图启动哪些活动。
    • 如果返回了多个活动(并且没有一个活动设置了isDefault),则显示一个意图选择器(例如,调用createChooser())。
    • 将该进程的显式结果传递给 startActivity()。

    问题:我不相信自定义意图选择器可以使活动成为给定操作的“默认”。

    【讨论】:

    • resolveActivity() 只会返回一个结果。您可能希望queryIntentActivities() 获得完整的候选人名单。
    • 啊,是的,Mark (@CommonsWare) 是正确的。我误读了文档。 :) 我已经更新了答案。 (谢谢!)
    • 感谢快速回复。事实上,这正是我正在寻找的。这个想法是能够根据它所拥有的权限组合来选择其中一个候选者。(如果权限组合危险,则从候选者中排除)。主要目的是通过将意图传递给恶意应用程序来避免发送可能导致安全漏洞的隐含意图。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2011-12-13
    • 1970-01-01
    相关资源
    最近更新 更多