Android 如何启动Ionic应用程序而不在web视图中打开它?
我被同一个问题困扰了两天:( 我有两个Android 如何启动Ionic应用程序而不在web视图中打开它?,android,cordova,phonegap-plugins,ionic,inappbrowser,Android,Cordova,Phonegap Plugins,Ionic,Inappbrowser,我被同一个问题困扰了两天:( 我有两个Ionic PhoneGap应用程序,它们需要能够彼此打开,不是在WebView中,而是在外部打开(如果应用程序已经在运行,可以重新启动或继续-我将处理这两个应用程序) 经过数小时的研究,我发现,通过使用appbrowser(window.open(URL,_system)),我可以从外部打开我尝试的所有商业应用程序(facebook、twitter、地图等)。在尝试打开我的一个应用程序时,同样的呼叫也会在web视图中打开它 window.open("fb:
Ionic PhoneGap
应用程序,它们需要能够彼此打开,不是在WebView
中,而是在外部打开(如果应用程序已经在运行,可以重新启动或继续-我将处理这两个应用程序)
经过数小时的研究,我发现,通过使用appbrowser(window.open(URL,_system)),我可以从外部打开我尝试的所有商业应用程序(facebook、twitter、地图等)。在尝试打开我的一个应用程序时,同样的呼叫也会在web视图中打开它
window.open("fb://", _system) -> opens Facebook separately.
window.open("myapp://", _system) -> opens my application in a web view.
我试图修改AndroidManifest.xml
和config.xml
,但我所更改的几乎所有内容都被建筑删除了
例如,如果我将“android:launchMode=“singleTop”
更改为“android:launchMode=“singleTask”
,然后运行“Ionic build”,我的更改将丢失
有什么解决方案吗?您应该看看这个插件:。您正在寻找的功能可以通过URL方案来实现 此外,切勿直接修改/platforms/文件夹中的文件。爱奥尼亚(cordova)会生成这些文件,这就是您不断丢失更改的原因。如果您想编辑这些文件,您可以查看cordova的解决方案。找到解决方案 需要在app/config.xml中添加这些行:
<preference name="AndroidLaunchMode" value="singleTask" />
<access origin="*" launch-external="yes" />
并将app/platforms/android/AndroidManifest.xml中的android:lauchMode更改为“单个任务”:
希望它能帮助某人!!要更改启动模式属性,请在
/config.xml
中添加以下内容:
<platform name="android">
<preference name="android-launchMode" value="singleTask"/>
</platform>
确保parent属性与/platforms/android/android manifest.xml
中的活动正确对应。在我的情况下,我必须将\'CordovaApp\'
更改为\'MainActivity\'
然后,您只需运行安卓版,属性应在清单中更改。您在哪里进行测试?在浏览器中还是在设备上?设备上,在浏览器“myapp://”没有meaning@MarcoMontalto请您发布答案,而不是更新您的问题以添加解决方案,好吗?Thanks@j0k当然,抱歉!回答addedHello并感谢您的回复。我已经在使用自定义URL方案,我可以使用此方案打开我的应用程序,问题是该应用程序始终在web视图中打开,无法使其按一个独立的应用程序。我将尝试了解挂钩的工作原理并让您知道。嗨,Marco,您能指定您在config.xml上更改了哪些行吗?谢谢。很抱歉,我不知道为什么这些行没有出现,我更新了答案;)这可能不明显,但OP讨论的是来自的
update\u platform\u config.js
。我尝试了这个解决方案,它似乎是随机工作的,结果是当我进行离子态重置时,钩子在android平台还原后被正确应用,但当安装插件时,一些插件将值更改回单顶
,事实上cordova prepare
足以重置值。我终于在config.xml
中用
解决了这个问题。是的,我找到的解决方案在任何情况下都应该有效,不需要编辑js文件
<platform name="android">
<preference name="android-launchMode" value="singleTask"/>
</platform>
var preferenceMappingData = {
'android': {
...
'android-launchMode': {target: 'AndroidManifest.xml', parent: 'application/activity[@android:name=\'CordovaApp\']', destination: 'android:launchMode'},
...
}
};