Как определить startMode в AndroidManifest.xml - Использование PhoneGap & JQM
Я пытаюсь ограничить свое приложение одним экземпляром. В настоящее время, если пользователь нажимает на главный экран для выхода из приложения, затем делает что-то снаружи и снова нажимает на значок приложения, он запускает второй экземпляр приложения.
Вот мой полный файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mydomain.qfa"
android:versionCode="4"
android:versionName="1.3">
<uses-sdk android:minSdkVersion="7"
android:targetSdkVersion="13"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:debuggable=["false"]
android:testOnly=["false"]
android:icon="@drawable/icon.png"
>
<activity
android:name="com.mydomain.qfa"
android:launchMode=["singleTask"]
android:alwaysRetainTaskState="true"
android:icon="@drawable/icon.png"
>
</activity>
</application>
</manifest>
Это одно приложение для активности (в основном не определено никаких действий). На главной странице JQM у меня есть что-то вроде этих записей:
<div data-role="page" id="HomePage">
<div data-theme="d" data-role="header" data-position="fixed" style="padding-bottom: 0px;" data-tap-toggle="false">
<div data-role="navbar">
<div data-role="content" class="MainContent" style="overflow:hidden; padding-top: 0px;">
Может кто-нибудь скажет мне, если мой манифест верен, и если я буду использовать
android:name="com.mydomain.qfa"
или если это что-то еще похожее на
android:name="com.mydomain.qfa.HomePage"?
или
android:name="com.mydomain.qfa.MainContent"?
Спасибо в Advance.
Ответы
Ответ 1
Я боролся с этой проблемой в течение 2 дней. Исправление для добавления этого атрибута было только недавно добавлено в Кордову с 3.5, вопрос CB-6048
добавить:
<preference name="AndroidLaunchMode" value="singleTask" />
в config.xml
Другие доступные значения:
- "стандарт"
- "SingleTop"
- "singleTask"
- "SingleInstance"
Ответ 2
Попробуйте
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="HomePage" android:theme="@android:style/Theme.DeviceDefault">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
это то, что сгенерировано с помощью CLI CLM и стартового режима, чтобы singleTop имел один экземпляр.
android: имя должно совпадать с именем основного класса java, а не с полным именем пакета. По умолчанию телефонная заставка устанавливает его как имя приложения.
Ответ 3
Это то, что в конечном итоге сработало для меня:
Однако трюк заключается в том, что вам нужно изменить в двух местах:
A) MyAppFolder\platform\android\AndroidManifest.xml
<activity android:alwaysRetainTaskState="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTask" android:name="AppName" android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
B) MyAppFolder\www\AndroidManifest.xml
<activity
android:name="AppName"
android:launchMode=["singleTask"]
android:alwaysRetainTaskState="true"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Надеюсь, что это поможет кому-то.
Ответ 4
попробуйте следующее:
<gap:config-file platform="android" parent="/manifest/application">
<activity android:launchMode="singleInstance" />
</gap:config-file>
но в настройке виджета конфигурации он должен быть таким (добавьте определение пространства имен android):
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
xmlns:android = "http://schemas.android.com/apk/res/android"
id = "com.wildabeast.app"
version = "1.0.0">
....
</widget>