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()
метод, так что он эффективно завершает приложение. Я не понимаю, что происходит, потому что это работало в прошлом году, прежде чем я сменил цели.
Какая конфигурация требуется для доступа к вызывающим намерениям каждый раз?
Похожие вопросы без ответов на мои:
- Этот блог объясняет, что я должен использовать "singleTop", но в моем случае это не работает.
- Этот ТАК вопрос не имеет никакого ответа.
- Этот знаменитый вопрос SO описывает настройку намерения. Но в моем случае я не создаю намерение сам, а Android делает.
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>