当前位置: 首页 > 知识库问答 >
问题:

Android从收到的共享意向中获取应用程序包名

龙涵蓄
2023-03-14

在我的android应用程序中,我注册了intent filter android。意图行动发送我的一个活动以接收来自其他应用程序的数据。

        <intent-filter>
            <action android:name="android.intent.action.SEND" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="image/*" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="text/plain" />
            <data android:mimeType="application/pdf" />
            <data android:mimeType="text/x-vcard" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND_MULTIPLE" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="image/*" />
            <data android:mimeType="application/pdf" />
        </intent-filter>

当使用共享意图从其他应用程序与我的应用程序共享数据时,此活动将接收该意图。我想知道与我的应用程序共享数据的应用程序的包名称。

我尝试了以下代码,但它总是返回null。

final String packageName = this.getCallingPackage()

有什么方法可以让我的应用程序共享数据的应用程序的包名称使用意图,我收到?

共有2个答案

宰鸿博
2023-03-14

若要使用getCallingPackage(),调用者应使用starActivityForResult(Intent, int)而不是starActive()。否则,它将返回null。直接从文档:

注意:如果调用活动不期望结果(即它没有使用包含请求代码的starActivityForResult(Intent, int)表单),那么调用包将为空。

https://developer.android.com/reference/android/app/Activity.html#getCallingPackage()

芮念
2023-03-14

如果共享意图是使用ShareCompat创建的。它将包含额外的调用包
但大多数应用程序都不提供这些信息。如果存在额外的功能,则不应将其用于任何安全关键功能,因为发件人可以自由提供他们喜欢的任何价值。

 类似资料:
  • 问题内容: 我希望当用户共享另一个应用程序(例如浏览器)的URL时,我的Android应用程序显示为一个选项。我该如何注册我的应用程序?我如何反应链接共享? 非常感谢。 编辑: 我试过像这样使用IntentFilter,但没有成功: 有任何想法吗? 问题答案: 您至少需要: 在清单中…至少会使其显示在“共享”列表中。 您缺少的最重要的部分是: 要使其实际执行某项操作,您需要一个Activity。

  • 我正在使用FB。允许用户使用此代码共享我的页面的ui: 当从 Android 移动应用程序中的嵌入式浏览器共享页面时,用户可以选择要用于打开共享对话框的应用程序。如果选择了脸书应用,则不会有回调响应。在普通的桌面浏览器中,一切都按预期工作。这种行为是预期的吗?

  • 首先请不要把这个问题当作重复的问题。所有其他问题都是旧的,我已经尝试了其中大多数的解决方案,但没有一个奏效。 我正在开发一个Android应用程序,我已经将我的应用程序添加到共享Android菜单中。我想添加功能,这样如果用户在共享列表上单击我的应用,例如在Chrome浏览器或Google Drive应用中,我的应用将从该应用接收数据,例如从Chrome it wold URL。 我尝试过使用不同

  • 有人能帮忙吗?我的栈是ubuntu-server 14.04带nginx/passenger和ruby 2.2.2。我无法让我的项目投入生产。开发中一切运行良好。 秘密.yml 计算机网络服务器 error.log 编辑:我忘了说我正在使用设计进行身份验证。

  • 我尝试过各种各样的解决方案,从堆栈溢出没有运气。我想要什么。 我知道不同应用程序的包名 例如,我有一个包名。如何获取此应用程序图标并在ImageView中显示?

  • 我已经从谷歌阅读了这个标准描述:https://developer.android.com/training/sharing/receive 在此之后,我更新了我的AndroidManifest.xml,以包括一个意图过滤器来接受来自其他应用程序的共享(对于各种哑剧类型)。 我可以将我的应用程序视为其他应用程序中的共享选项,当我在其他应用程序中选择一个文件(例如,照片应用程序中的图像文件)并选择与