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

时间:2015-06-26 09:22:01

标签: android cordova phonegap-plugins ionic inappbrowser

我在同一个问题上坚持了2天:(

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

经过数小时的研究,我发现,使用InAppBrowser (window.open(URL, _system)),我可以在外部打开我尝试过的每个商业应用程序(facebook,twitter,maps等)。尝试打开我的某个应用程序时,同一个调用会在Web视图中打开它。

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

我试图修改AndroidManifest.xmlconfig.xml,但几乎所有我改变的内容都被大楼删除了。

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

任何解决方案?

3 个答案:

答案 0 :(得分:7)

解决方案!!!

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

<preference name="AndroidLaunchMode" value="singleTask" />
<access origin="*" launch-external="yes" />

并在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>

...

希望它会帮助别人!!

答案 1 :(得分:2)

You should take a look at this plugin: https://github.com/EddyVerbruggen/Custom-URL-scheme. The functionality you're looking for can be accomplished by URL scheme's.

Also, never directly modify a file in the /platforms/ folder. Ionic (cordova) generates these files, that's why you keep losing your changes. If you want to edit those files, you may take a look at cordova's hooks.

答案 2 :(得分:1)

要更改 launchMode 属性,请在./config.xml中添加以下内容:

<platform name="android">
    <preference name="android-launchMode" value="singleTask"/>
</platform>

另外,请务必修改./hooks/after_prepare/030_update_platform_config.js。有行:

var preferenceMappingData = {
    'android': {
        ...
        'android-launchMode': {target: 'AndroidManifest.xml', parent: 'application/activity[@android:name=\'CordovaApp\']', destination: 'android:launchMode'},
        ...
    }
};

确保属性与./platforms/android/AndroidManifest.xml中的活动正确对应。就我而言,我必须将\'CordovaApp\'更改为\'MainActivity\'

然后你只需运行ionic build android,就应该在清单中更改属性。