如何启动Ionic应用程序而不是在Web视图中打开它?

Mar*_*lto 2 android phonegap-plugins cordova inappbrowser ionic

我被困在同一个问题2天:(

我有两个Ionic-PhoneGap应用程序需要能够相互打开,不是在WebView外部,而是在外部(如果应用程序已经运行,它可以重新启动或只是继续 - 我将处理两者).

经过几个小时的研究,我发现,使用InAppBrowser (window.open(URL, _system)),我能够在外部打开我尝试的每个商业应用程序(Facebook,推特,地图等).尝试打开我的某个应用程序时,同一个调用会在Web视图中打开它.

window.open("fb://", _system) -> opens Facebook separately.
window.open("myapp://", _system) -> opens my application in a web view.
Run Code Online (Sandbox Code Playgroud)

我试图修改AndroidManifest.xml和config.xml,但几乎我改变的一切都被建筑物抹去了.

例如,如果我"android:launchMode="singleTop"改为"android:launchMode="singleTask"并运行"Ionic build",我的更改就会丢失.

有解决方案吗

Mar*_*lto 7

解决方案!!!

需要在app/config.xml中添加这些行:

<preference name="AndroidLaunchMode" value="singleTask" />
<access origin="*" launch-external="yes" />
Run Code Online (Sandbox Code Playgroud)

并在app/platforms/android/AndroidManifest.xml中将android:lauchMode更改为"Single Task":

...

<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"  android:label="@string/activity_name" 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.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="fkapp" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

...

希望它会帮助别人!!