android – 让Ionic应用程序出现在“共享”列表中并接收数据
作者:互联网
当用户单击图像的共享按钮时,我试图让“离子”应用程序出现在“共享”列表中.
据我所知,我必须添加类似的东西
<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中的一些调整以实现此目的.
这是我能想到的最好的答案.希望能帮助到你.干杯.
标签:android,ios,ionic-framework,cordova,ionic3 来源: https://codeday.me/bug/20190930/1835312.html