获取正在调用我的应用程序的应用程序的包名称

时间:2015-07-08 13:33:55

标签: android android-activity android-package-managers

我正在开发一个Android应用程序,在这些文件夹中创建文件夹,存储文件和图像。每个文件夹都有一个列表,其中包含允许访问这些文件和图像的应用程序的名称。我的问题是代码是什么代码可以为我提供访问我的应用程序的应用程序的包名称,以便将其与每个文件夹列表中的应用程序名称进行比较。当案例是其他应用程序从我的应用程序(startActivityForResult)检索数据时,我成功获取了包名称。但是当案例只是查看时,我无法得到包名称(startActivity)!在这两种情况下我都需要知道包名。任何帮助?

1 个答案:

答案 0 :(得分:1)

对不起。这是不可能的。

当使用startActivityForResult()启动活动时,Android需要知道将结果返回给谁。它将此信息保存在内部数据结构中,并通过getCallingActivity()getCallingPackage()将信息提供给被调用的活动。

但是,当使用startActivity()启动活动时,Android不会存储有关调用者活动的信息,因为它不需要此信息(因为Android知道它不会返回结果到调用者活动),因此它不适用于您的活动。

请注意,活动也可以由Service和BroadcastReceiver组件启动,因此并不总是有“调用者活动”。

这可能是Android设计中的一个缺陷,也可能是“安全功能”,具体取决于您的使用方式。