如何启动 Ionic 应用程序而不在 Web 视图中打开它?
How to launch an Ionic application and NOT open it in a web view?
我在同一个问题上卡了 2 天:(
我有两个 Ionic-PhoneGap
应用程序需要能够相互打开,不是在 WebView
中,而是在外部(如果应用程序已经 运行ning,它可以重新启动或继续 - 我会处理两者)。
经过数小时的研究,我发现使用 InAppBrowser (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",我的更改将丢失..
有什么解决办法吗?
你应该看看这个插件:https://github.com/EddyVerbruggen/Custom-URL-scheme。您正在寻找的功能可以通过 URL 方案来实现。
此外,切勿直接修改 /platforms/ 文件夹中的文件。 Ionic (cordova) 生成这些文件,这就是您不断丢失更改的原因。如果你想编辑这些文件,你可以看看 cordova 的 hooks.
已找到解决方案!!!
需要在 app/config.xml 中添加那些行:
<preference name="AndroidLaunchMode" value="singleTask" />
<access origin="*" launch-external="yes" />
并在 app/platforms/android/AndroidManifest 中将 android:lauchMode 更改为 "Single Task"。xml :
...
<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>
...
希望对大家有所帮助!!
要更改 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'},
...
}
};
确保 parent 属性与 ./platforms/android/AndroidManifest.xml
中的 activity 正确对应。在我的例子中,我不得不将 \'CordovaApp\'
更改为 \'MainActivity\'
。
那么你只需 运行 ionic build android
并且 属性 应该在清单中更改。
我在同一个问题上卡了 2 天:(
我有两个 Ionic-PhoneGap
应用程序需要能够相互打开,不是在 WebView
中,而是在外部(如果应用程序已经 运行ning,它可以重新启动或继续 - 我会处理两者)。
经过数小时的研究,我发现使用 InAppBrowser (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",我的更改将丢失..
有什么解决办法吗?
你应该看看这个插件:https://github.com/EddyVerbruggen/Custom-URL-scheme。您正在寻找的功能可以通过 URL 方案来实现。
此外,切勿直接修改 /platforms/ 文件夹中的文件。 Ionic (cordova) 生成这些文件,这就是您不断丢失更改的原因。如果你想编辑这些文件,你可以看看 cordova 的 hooks.
已找到解决方案!!!
需要在 app/config.xml 中添加那些行:
<preference name="AndroidLaunchMode" value="singleTask" />
<access origin="*" launch-external="yes" />
并在 app/platforms/android/AndroidManifest 中将 android:lauchMode 更改为 "Single Task"。xml :
...
<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>
...
希望对大家有所帮助!!
要更改 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'},
...
}
};
确保 parent 属性与 ./platforms/android/AndroidManifest.xml
中的 activity 正确对应。在我的例子中,我不得不将 \'CordovaApp\'
更改为 \'MainActivity\'
。
那么你只需 运行 ionic build android
并且 属性 应该在清单中更改。