我应该如何在 AndroidManifest 中定义 launchMode.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"?

提前谢谢。

我在这个问题上挣扎了 2 天。添加此属性的修复程序最近添加到 Cordova,从 3.5 开始,问题 CB-6048

加:

<preference name="AndroidLaunchMode" value="singleTask" />

进行配置.xml

其他可用值:

  • "标准"
  • "单顶"
  • "单任务"
  • "单实例"

尝试使用

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

这是由phonegap CLI和启动模式设置为SingleTop以具有单个实例生成的内容。

android:name 必须与活动的主 Java 类的名称匹配,而不是完整的包名称。默认情况下,phonegap 将其设置为应用名称。

这是最终对我有用的:

但是,诀窍是您需要在两个位置进行更改

A) MyAppFolder\platforms\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>

希望对某人有所帮助。

试试这个:

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

相关内容

  • 没有找到相关文章

最新更新