gpt4 book ai didi

android - 通过来自另一个应用程序的 webintents 将 url 发送到 ionic android 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:06 25 4
gpt4 key购买 nike

寻找更新的解决方案,运行使用 Cordova 5.x 的最新 ionic 1.1.0 版本。尝试能够浏览 chrome 中的网站并使用网络 Intent 将该 url 发送到我的 ionic android 应用程序。我的应用程序编译并运行,但是当我尝试使用 chrome(或任何其他应用程序)的共享功能并选择要共享到的应用程序时,我的应用程序崩溃了。

我第一次尝试使用这个插件:

ionic 插件添加https://github.com/Initsogar/cordova-webintent

然后删除了插件,我还尝试了最近更新的分支:

ionic 插件添加https://github.com/fluentstream/cordova-webintent

在我的 app.js 文件中,我放置了以下代码:

.run(function($ionicPlatform, $rootScope, $ionicHistory, $state) { 
$ionicPlatform.ready(function() {
window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_TEXT,
function(url) {
incomingURL = url;
//alert(incomingURL);
console.log(incomingURL);
}, function() {
incomingURL = false;
//alert("no url");
console.log("no url");
});
});
})

我也试过:

.run(function($ionicPlatform, $rootScope, $ionicHistory, $state) { 
$ionicPlatform.ready(function() {
window.plugins.webintent.getUri(function(url) {
if(url !== "") {
alert(url);//url is the url the intent was launched with
}
});
});
})

在文件 config.xml 中,我将放置:

<plugin name="WebIntent" value="com.borismus.webintent.WebIntent"/>

在 AndroidManifest.xml 中我会手动输入:

<activity android:name="ShareActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>

该应用程序运行,但是当我转到 chrome 并单击共享按钮,然后选择我的应用程序时,该应用程序关闭并显示以下 android 消息:

Unfortunately, MyAppName has stopped.

任何人都可以提出一个解决方案来让共享 Intent 与我的应用程序一起使用......或者我忘记了什么并且做错了什么。

谢谢!

最佳答案

这个问题有点老了。但我或多或少遇到了类似的挑战。我没有使用 WebIntent 插件,因此我开发了自己的插件来处理 Android 上的 Intents。

你可以检查这个: https://github.com/napolitano/cordova-plugin-intent

虽然我仍在为我自己的项目开发这个插件,但它几乎可以使用,而且文档应该足以让我踏入大门。

一些背景:

要允许第三方应用向您的应用发送内容,您必须向 AndroidManifest.xml 中的 MainActivity 添加一个 intent-filter。

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

虽然您可以手动执行此操作,但这有一些缺点 - 因此您可能需要一个钩子(Hook)或类似的东西。如果你去上面的存储库,你会找到这个例子。

除了 intent-filter,您目前需要一个插件,它允许您 a) 访问 cordova intent(这对于在应用程序启动时访问发送的内容很重要)并在 onNewIntent 时接收通知如果在您的应用程序运行时发送内容,则会触发事件。

这正是我的插件所做的。它使您可以访问 cordova Intent 并允许您处理 onNewIntent事件。

例子:

window.plugins.intent.getCordovaIntent(function (Intent) {
console.log(Intent);
}, function () {
console.log('Error');
});

window.plugins.intent.setNewIntentHandler(function (Intent) {
console.log(Intent);
});

作为成功的结果,您将收到一个有限的 Intent 对象。这可以由您的应用程序处理。

例子:

{
"action": "android.intent.action.SEND_MULTIPLE",
"clipItems": [
{
"uri": "file:///storage/emulated/0/Download/example-document.pdf"
},
{
"uri": "file:///storage/emulated/0/Download/example-archive.zip"
}
],
"flags": 390070273,
"type": "*/*",
"component": "ComponentInfo{com.example.droid/com.example.droid.MainActivity}",
"extras": "Bundle[mParcelledData.dataSize=596]"
}

虽然此示例实际上显示的是 JSON,但您将收到一个随时可用的对象。

请注意,我目前仅根据自己的需要开发插件。但是它也可能对您有用。目前 README 中没有添加角度示例,但我认为这应该不是什么大问题。

关于android - 通过来自另一个应用程序的 webintents 将 url 发送到 ionic android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com