Android (манифест) - открыть намерение в приложении в фоновом режиме, а не в отправителе - PullRequest
0 голосов
/ 12 сентября 2018

Мне удалось отредактировать файл манифеста так, чтобы мое приложение Android могло получать файлы с определенным расширением файла из приложений обмена сообщениями через намерения:

        <intent-filter>
            <!-- needed for properly formatted email messages -->
            <data
                android:scheme="content"
                android:mimeType="application/vnd.eureka"
                android:pathPattern=".*\\.cw" />
            <!-- needed for mangled email messages -->
            <data
                android:scheme="content"
                android:mimeType="application/eureka"
                android:pathPattern=".*\\.cw" />
            <!-- needed for mangled email messages -->
            <data
                android:scheme="content"
                android:mimeType="application/octet-stream"
                android:pathPattern=".*\\.cw" />
            <data
                android:scheme="content"
                android:mimeType="*/*"
                android:pathPattern=".*\\.cw" />

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>

        <!-- Register to handle file opening -->
        <intent-filter>
            <data android:scheme="file"
                  android:mimeType="*/*"
                  android:pathPattern=".*\\.cw"
                  android:host="*"/>

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>

Это хорошо работает, когда мое приложение не работает до того, как онодолжен получить файл или когда намерение исходит от WhatsApp или приложения GMail.

Однако, когда приложение уже запущено в фоновом режиме, и вы пытаетесь открыть файл с ним из мессенджера Telegram, второй экземпляр приложения создается, по-видимому, внутри Telegram (переключатель приложения показывает два экземпляраприложение: одно с надписью "Eureka" / название приложения и одно с надписью Telegram).Это приводит к тому, что приложение перестает отвечать на запросы.Это даже случается с новыми проектами, поэтому я подозреваю, что приложения Delphi не поддерживают наличие нескольких экземпляров (я разрабатываю в Delphi 10 Seattle).

Я хотел бы, чтобы намерение было открыто в экземпляре, уже работающем в фоновом режиме.чтобы избежать этой проблемы.

LaunchMode уже установлен на "singleTask", и я изменил его на "singleInstance" без успеха.

...