首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取应用程序共享意图的包名

获取应用程序共享意图的包名
EN

Stack Overflow用户
提问于 2013-04-03 12:07:52
回答 7查看 5.7K关注 0票数 4

我希望获得创建共享意图的应用程序名称或其包名。我正在制作通过意图接收共享数据的应用程序,如何获得创建者应用程序的包名?类似于intent.getSourceBackageName()

编辑:我不确定我的问题是否清楚。但是我需要找出调用我的应用程序的名称,例如,如果我在浏览器中共享,我需要找到一种方法来知道浏览器应用程序是与我共享数据的应用程序。

EN

回答 7

Stack Overflow用户

发布于 2014-11-25 01:02:34

如何获得创建者应用程序的包名?

例如,可能没有“创建者应用程序”,因为可以从命令行(adb shell am).发送ACTION_SEND Intent而且,由于ACTION_SEND不与startActivityForResult()一起使用,njzk2 2的解决方案将无法工作。

票数 4
EN

Stack Overflow用户

发布于 2014-11-30 21:43:52

获取启动活动的应用程序的包名:

代码语言:javascript
运行
复制
/**
 * 
 * @param activity
 * @return The calling application's package name or {@code null} if the activity was not
 *         started with {@link #startActivityForResult}
 */
public static String getCallingPackageName(Activity activity) {
    return activity.getCallingPackage();
}

获取启动活动的应用程序名称:

代码语言:javascript
运行
复制
/**
 * Get the name of the app that started this Activity.
 * 
 * @param activity
 * @return The calling application's app name or {@code null} if the activity was not started
 *         with {@link #startActivityForResult}
 */
public static String getCallingAppName(Activity activity) {
    final String packageName = activity.getCallingPackage();
    if (packageName == null) {
        return null;
    }
    final PackageManager pm = activity.getPackageManager();
    try {
        return pm.getApplicationInfo(packageName, 0).loadLabel(pm).toString();
    } catch (NameNotFoundException ignored) {
    }
    return null;
}

备注:

通过使用以下意图筛选器创建活动进行测试:

代码语言:javascript
运行
复制
<intent-filter>
    <action android:name="android.intent.action.GET_CONTENT" />

    <data android:mimeType="*/*" />

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

打开的Gmail ->组成了一个新的消息,并选择了“附加文件”->选择了测试应用程序。

getCallingAppName(this)返回的文档

getCallingPackageName(this)返回com.android.documentsui

在我的例子中,它返回文档而不是Gmail,因为Gmail默认打开文档。因此,您应该考虑到,可能不可能真正知道最初的应用程序,结果将永远是null,除非您的Activity是用startActivityForResult调用的。

票数 2
EN

Stack Overflow用户

发布于 2013-04-03 13:23:49

考虑到创建一个Intent而不包含您要查找的信息是可能的,因此不可能保证能够提取它。但是,如果您检查所有带着意图到达的字段(探索intent.getCategories),您可能会发现一些模式,您可以使用这些模式来解决某些情况.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15786926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档