android – 让Ionic应用程序出现在“共享”列表中并接收数据

当用户单击图像的共享按钮时,我试图让“离子”应用程序出现在“共享”列表中.

Sharing example

据我所知,我必须添加类似的东西

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

到AndroidManifest.xml.我认为,我可以使用cordova-custom-config plugin做.
然后,我必须以某种方式处理这个意图,这对我来说是棘手的.似乎目前为意图维护的唯一cordova插件是this one.我尝试使用它像这样:

  initializeApp() {
    this.platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      this.statusBar.styleDefault();
      this.splashScreen.hide();
      this.registerBroadcastReceiver();
    });
  }
  private registerBroadcastReceiver(){
      window.plugins.intentShim.registerBroadcastReceiver({
          filterActions: [
              'com.darryncampbell.cordova.plugin.broadcastIntent.ACTION'
              ]
          },
          function(intent) {
              //  Broadcast received
              console.log('Received Intent: ' + JSON.stringify(intent.extras));
          }
      );
  }

但是这样我得到一个错误,即window.plugins是未定义的.我真的不知道如何将它与Ionic结合起来.

此外,这仅适用于Android,我也想为iOS工作.
This SO question是相关的,并提到了一种方法来为iOS做这个,但它大约4年(链接的iOS部分5年)和在答案中为Android指定的项目webintent甚至不再存在.

如果有人可以帮助我在这里会很棒.

还有关系:

> Cordova receive shared data from other app – 使用过时的插件,window.plugins,Android特定.
> Sending url to ionic android app via webintents from another app – 使用过时的插件,window.plugins,Android特定.

更新

所有答案都只关注Android,我真的希望有人能指出我正确的iOS方向,因为我需要更多……

最终结论&赏金

赏金
经过长时间的考虑,我已经结束了给予@Ghandi赏金.虽然没有人能给出完整的答案,但他是唯一一个试图回答整个问题的人 – 包括iOS部分.我没想到一个完整的代码解决方案,只是Android和iOS正确方向的指针,这就是他最接近所有答案的东西.我知道这是一个非常广泛的问题,我要感谢所有花时间回答和/或评论这个问题的人.

对于那些试图完成同样事情的人来说,这就是我对所有研究和答案的总结

Android的

正如我在上面的问题中已经描述的那样,您必须将这些行添加到AndroidManifest.xml中. Android将使您的应用程序显示在共享列表中.您的应用程序收到的数据必须通过所谓的Intent来处理.为此,您可以使用Ionic Native – Web Intent.截至9.5.2017,由于Plugin Ionic Native使用的不再存在,因此无法使用.然而,我已经创建了一个issue on Github,我被告知Ionic Native的下一个版本(我认为3.7.0)应该在接下来的两周内发布,应该通过使用我上面提到的问题中提到的plugin来解决这个问题.这解决了必须亲自玩Ionic Framework并简单地使用Ionic Native的问题.

iOS版

在iOS中,它看起来有点棘手,而且在网络上也找不到它.你最好按照@Ghandi在下面的答案中提供的链接.

解决方法:

经过一些详细的分析,这是我可以得出的结论:

在Android中,您可以使用cordova-plugin-intent将您的应用程序添加到共享列表中,如here所述.您还可以通过在活动中添加intent过滤器来实现此目的,如here所述

在iOS中,这有点棘手,因为没有直接的插件或现成的解决方案来实现这一点.但是我可以得到的与iOS共享菜单中添加应用程序相关的最佳链接是getting listed in share menu该链接包含苹果文档以执行此操作以及Info.plist中的一些调整以实现此目的.

这是我能想到的最好的答案.希望能帮助到你.干杯.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...