【问题标题】:How to get the package name of an external app which calls my app如何获取调用我的应用程序的外部应用程序的包名称
【发布时间】:2015-04-14 19:27:14
【问题描述】:

我的应用程序 com.test.sample 由外部应用程序 com.testExternal.outsideApp 调用。外部应用使用 Intent 通过调用 startActivityForResult 来调用 com.test.sample 的 MainActivity。我正在寻找的是一种以编程方式获取外部应用程序包名称的方法。我尝试了几种方法,例如

String parentPackageName = this.getParent().getPackageName();
//这会失败,因为父级总是返回 NULL。

String packageName = this.getIntent().getPackage();
//这会返回不是我想要的当前应用程序的包名。

还有其他方法可以获取调用者应用的包名吗?

【问题讨论】:

  • 让调用应用将其包名放入使用的意图中。
  • 我明白了。但是外部应用程序不包含传入捆绑包中的包名称,并且根据设计,设计此应用程序的外部团队不想发送它。我得到的唯一信息是应用名称。
  • 你之前没有这么说。为什么不?您怎么知道应用名称?

标签: android android-activity package-name


【解决方案1】:

如果您的应用程序以Activity#startActivityForResult 启动,则可以使用Activity#getCallingActivity() 来执行此操作。

【讨论】:

  • 如果我想知道通过共享启动我的应用程序的应用程序,它不起作用,因为它在文档中已经提到 - 如果调用活动不期望结果(就是它没有使用包含请求代码的 startActivityForResult(Intent, int) 形式),则调用包将为空。
  • 如果您检查答案,它已经指定调用者需要使用 startActivityForResult 调用活动才能使此方法起作用
猜你喜欢
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多