OnNewIntent в API 19 Android

Я хотел бы восстановить намерение Android, с которого запускается моя деятельность.

Моя деятельность, протестированная в API 19 (KitKat), кроме основного намерения, имеет следующие фильтр намерений и параметры:

        android:alwaysRetainTaskState="false"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:screenOrientation="landscape"
        android:configChanges="orientation|keyboardHidden|screenSize">
         <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="file" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.svg" />
            <data android:host="*" />
        </intent-filter>

Но когда я открываю файл SVG во время выполнения действия, он не обрабатывает новое намерение. Я попробовал следующие комбинации, запустил активность,

android:launchMode="singleTask"

android:launchMode="standard"

android:launchMode="singleTop"

в сочетании со следующим параметром, что составляет 6 конфигураций

android:finishOnTaskLaunch="true" or "false"

Но никто из них не делает onNewIntent функция, вызываемая при открытии SVG с моим приложением. Вместо этого он отображает предыдущее состояние (onPause и onResume вызываются, как и ожидалось, а вместо них вызывается onCreate).

Единственный обходной путь, который я нашел, - это finish() функция от onPause() метод, так что он эффективно завершает приложение. Я не понимаю, что происходит, потому что это работало в прошлом году, прежде чем я сменил цели.

Какая конфигурация требуется для доступа к вызывающим намерениям каждый раз?

Похожие вопросы без ответов на мои:

1 ответ

Решение

На данный момент моя программа работает хорошо и загружает SVG, как я хотел. Некоторые моменты о моей конфигурации (может быть, это может помочь)

  • Я нацеливаюсь на Android API 15. Я сдался с 19.
  • я использую android:finishOnTaskLaunch="true" в AndroidManifest.xml
  • Я не звоню finish() в onPause() метод
  • OnNewIntent никогда не называется, но onCreate вызывается метод, который разбирает новое намерение.
  • Содержание манифеста деятельности следующее:

    <activity
      android:name="com.example.mypackage"
      android:launchMode="singleTop"
      android:finishOnTaskLaunch="true"
      android:alwaysRetainTaskState="false"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
      android:screenOrientation="landscape"
      android:configChanges="orientation|keyboardHidden|screenSize">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="file" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.svg" />
        <data android:host="*" />
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    
Другие вопросы по тегам