Установка приложения в качестве дома запускает другой экземпляр - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу установить свое приложение как средство запуска (домашнее приложение), но есть поведение, которое я не могу понять правильно. Сначала я открываю приложение и go возвращаюсь на главный экран, чтобы он оставался в фоновом режиме. Затем, когда я устанавливаю в настройках домашнее приложение на мое, оно создает новый экземпляр. Также, когда я go возвращаюсь в настройках приложения запуска по умолчанию, кажется, не отображается обратно в списке запущенных приложений. Я не уверен, как это сделать правильно, я пробовал разные режимы запуска, но, похоже, это не помогает.

Вот мой файл манифеста

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="xxx" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:keepScreenOn="true" android:label="@string/activity_name" android:launchMode="singleTop" android:name="jk.cordova.plugin.kiosk.KioskActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 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.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.HOME" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.darryncampbell.cordova.plugin.intent.ACTION" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <receiver android:name="jk.cordova.plugin.kiosk.MyPackageReplacedEventReceiver">
            <intent-filter>
                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
            </intent-filter>
        </receiver>
        <provider android:authorities="${applicationId}.darryncampbell.cordova.plugin.intent.fileprovider" android:exported="false" android:grantUriPermissions="true" android:name="com.darryncampbell.cordova.plugin.intent.CordovaPluginIntentFileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" />
        </provider>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.REORDER_TASKS" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>

1 Ответ

1 голос
/ 05 февраля 2020

У вас есть launchMode, установленный как singleTop. Это означает, что у вас когда-либо будет только один экземпляр, если он находится на вершине стека.

Документы

также может быть создан новый экземпляр действия "singleTop" для обработки новое намерение. Однако, если целевая задача уже имеет существующий экземпляр действия на вершине своего стека, этот экземпляр получит новое намерение (в вызове onNewIntent ()); новый экземпляр не создан. В других обстоятельствах - например, если существующий экземпляр действия «singleTop» находится в целевой задаче, но не на вершине стека, или если он находится на вершине стека, но не в целевой задаче - новый экземпляр будет создан и помещен в стек.

Что вы пытаетесь:

Сначала я открываю приложение и go возвращаюсь на главный экран, чтобы он оставался в фон.

Я не думаю, что последние между лаунчерами работают так, как вы ожидаете.

Затем, когда я устанавливаю в настройках домашнее приложение на мое, оно создает новый экземпляр.

Да, потому что это программа запуска, и она запускает процесс fre sh.

Также, когда я go возвращаюсь в настройках приложения запуска по умолчанию, не отображается в списке запущенных приложений.

Действия запуска не отображаются в последних приложениях.

...