15

アプリケーションを 1 つのインスタンスに制限するのに苦労しています。現在、ユーザーがホーム画面を押してアプリケーションを終了し、外部で何かをしてアプリケーションのアイコンを再度クリックすると、アプリケーションの 2 番目のインスタンスが起動します。

ここに私の完全なマニフェストファイルがあります:

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

前もって感謝します。

4

4 に答える 4

1

試してみてください

<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 によって生成され、launchmode が singleTop に設定されて単一のインスタンスを持つようになったものです。

android:name は、完全なパッケージ名ではなく、アクティビティのメイン Java クラスの名前と一致する必要があります。デフォルトでは phonegap はそれをアプリ名として設定します。

于 2014-02-13T10:06:00.047 に答える
0

これは最終的に私のために働いたものです:

ただし、トリックは、次の 2 つの場所で変更する必要があることです

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>

それが誰かを助けることを願っています。

于 2014-02-13T13:53:37.813 に答える
0

これを試して:

<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>
于 2015-12-09T12:27:19.457 に答える