Подтвердить что ты не робот

Как определить 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.

4b9b3361

Ответ 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>