Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何启动Ionic应用程序而不在web视图中打开它?_Android_Cordova_Phonegap Plugins_Ionic_Inappbrowser - Fatal编程技术网

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'},
        ...
    }
};