You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测向我的.NET MAUI移动应用分享文件的来源应用(Android/iOS)

如何检测向我的.NET MAUI移动应用分享文件的来源应用(Android/iOS)

没问题,针对你用.NET MAUI开发、且ShareExtensions采用原生编码的场景,咱们可以分别在Android和iOS的原生扩展代码里实现来源应用的检测,具体操作如下:

Android 端实现

在你的Android分享扩展组件(比如处理分享的Activity或者自定义的Share Extension类)中,直接通过Intent相关API就能获取来源应用的包名:

  • 首先在处理分享请求的代码里,尝试用getCallingPackage()获取调用方包名:
String sourcePackageName = getCallingPackage();
  • 如果getCallingPackage()返回空值(比如通过系统分享面板间接调用的情况),可以从Intent的额外参数里兜底获取:
if (sourcePackageName == null) {
    sourcePackageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
}

拿到这个包名后,你可以通过MAUI的跨端通信方式(比如MessagingCenter或者静态全局变量)把值传递到共享项目中,后续就能轻松判断是com.whatsapp还是com.google.android.apps.photos这类来源了。

iOS 端实现

iOS的Share Extension是独立进程,咱们可以通过扩展上下文的userInfo字典获取来源应用的Bundle ID:

在你的Share Extension的ViewController类中,添加以下代码:

if let originatingBundleID = extensionContext?.userInfo?[NSExtensionActivationOriginatingBundleIDKey] as? String {
    // originatingBundleID就是来源应用的唯一标识,比如com.whatsapp
    // 同样可以通过MAUI的跨端通信方式把这个值传到共享项目
}

注意: 这个API在iOS 14及以上版本可用,如果你需要兼容更低版本,可以考虑用extensionContext?.sourceApplication(不过这个API已被标记为废弃,仅做兼容兜底用)。

拿到来源应用的标识后,你就可以在MAUI的共享逻辑里做针对性的业务处理啦。

备注:内容来源于stack exchange,提问作者Alpay Çalışır

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:43:24