寻找更新的解决方案,运行最新的离子1.1.0版本,使用科尔多瓦5. x。尝试能够在chrome中浏览一个网站,并使用网络意图将该网址发送到我的ionicAndroid应用程序。我的应用程序编译和运行,但是当我试图使用共享功能从chrome(或任何其他应用程序),并选择我的应用程序共享,我的应用程序崩溃。
我第一次尝试使用插件:
离子插件添加https://github.com/Initsogar/cordova-webintent
然后删除插件,我还尝试了一个最近更新的叉子:
离子插件添加https://github.com/fluentstream/cordova-webintent
在我的应用程序中。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"/>
在Androidanifest.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消息:
不幸的是,MyAppName已经停止。
有人能提出一个解决方案,让共享意图与我的应用程序一起工作吗...或者我忘记了什么,做错了什么。
非常感谢。
我想添加到@axel napolitano的答案中,明确说明在Ionic 3应用程序中应该在哪里添加代码。免责声明:我几乎无法编写Ionic应用程序。
在撰写本文时,我目前正在使用Ionic 3.9。经过多次尝试和错误,并将答案拼凑在一起,我能够让它工作(也就是说,让我的Ionic应用共享另一个应用)
此时,你应该已经为Android编译了应用程序,并将Android手机连接到电脑上,以便应用程序在其上运行。查找有关如何在物理Android设备上运行ionic应用程序的文档。
下面是命令:ionic cordova run android-l-c
。
您还应该添加
将代码放入/pages/home/home。ts-确保您的构造器已注入“平台”。
export class HomePage {
constructor(private platform:Platform){
...
}
...
}
创建此方法(在home.ts中)以接收应用程序未处于加载状态时的意图:
ionViewDidLoad(){
this.platform.ready().then(() => {
(<any>window).plugins.intent.getCordovaIntent(
function (Intent) {
//you should filter on the intents you actually want to receive based on Intent.action
console.log('intent received on app launch' + JSON.stringify(Intent));
},
function () {
console.log('Error getting cordova intent');
}
);
});
}
若要接收应用已加载时的意图:
ionViewDidEnter() {
this.platform.ready().then(() => {
(<any>window).plugins.intent.setNewIntentHandler(
function (Intent) {
console.log('new intent' + JSON.stringify(Intent) );
}
);
});
}
有趣的事实:“官方”网络意图插件(darryncambell的)——我无法使用——归功于纳波利塔诺的插件。来源
我最终用同样的方法让darryncambell的插件工作。
发现问题是由于我如何设置我的Androidanifest.xml文件。
我使用了一个额外的活动标签,而我本应该在1活动中包含意图。
例如,我有:
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<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>
当我应该拥有的时候:
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
这个问题有点陈旧了。但我也有过类似的挑战。我没有运气与WebIntent插件,因此我开发了自己的插件处理Android上的Intents。
你可以检查这个:https://github.com/napolitano/cordova-plugin-intent
虽然我还在为自己的项目开发这个插件,但它几乎是可用的,而且文档应该足够好,足以让我入门。
一些背景:
要允许第三方应用向你的应用发送内容,你必须在AndroidManifest中向你的MainActivity添加一个意图过滤器。xml。
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.catehtml" target="_blank">gory.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
虽然你可以手动操作,但这也有一些缺点——所以你可能想要一个钩子或类似的东西。如果你去上面的存储库,你会发现并举例说明这一点。
除了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);
});
成功后,您将收到一个有限意图对象。这可以由你的应用程序处理。
例子:
{
"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,但您将收到一个随时可用的对象。
请注意,我目前开发这个插件只是为了满足自己的需要。然而,它可能也适用于你。目前,自述文件中没有添加任何角度的示例,但我认为这应该不是一个大问题。
我正在开发两个应用程序。让第一个应用程序是APP1,第二个应用程序为APP2。现在在APP1中,我不提供任何用户权限,如INTERNET权限,但它将发送任何http url,如http://www.google.com我的第二个APP2将包含INTERNET等用户权限。Http请求将从APP1发送到APP2,APP2将响应该请求,然后将结果发送回APP1。最后APP1包含一个Web视图以显示结果。
问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序
我正在构建一个spring boot rest API,其中。我想通过HTTP将文件从一个spring rest API应用程序发送到另一个rest API应用程序,并获得文件是否成功发送的响应。 关于上述场景的更多解释 我有2个spring rest API。一个在本地机器上的端口4000上运行,另一个在5000上运行。我想通过post请求将一个文件从4000端口rest API发送到5000端
我想从我的应用程序在不同的社交应用程序中共享音频文件。我正在使用以下代码来共享音频。它适用于Whatsapp,但不适用于共享。共享应用程序打开但无法检索文件并显示“不支持发送此类内容”。该文件为“mp3”格式。我可以使用android通用共享选项从文件管理器共享文件,然后选择共享。
我在google play商店里有两个应用程序。有可能在第一个描述中创建一个从一个到另一个的http链接吗?
Google在这里有一个很好的页面展示了如何这样做:https://developer.android.com/distribute/tools/promote/linking.html 基本上,使用这段代码,它将打开Play Store到新apps页面: 我错过了什么?我肯定它非常简单,也许我需要进口的东西。 解决方案:导入Uri类是一个问题。我仍然不确定新的热键是什么来导入它。Apple-Sh