我在同一个问题上坚持了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.xml
和config.xml
,但几乎所有我改变的内容都被大楼删除了。
例如,如果我将"android:launchMode="singleTop"
更改为"android:launchMode="singleTask"
并运行" Ionic build",我的更改将会丢失..
任何解决方案?
答案 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
,就应该在清单中更改属性。