Intereting Posts
Является ли Квазар и Комцат заменой Ктора? Android Studio бросает java.lang.ClassNotFoundException при запуске кода Kotlin Java Interop: применить @JvmName к getters свойств в интерфейсе или абстрактном классе Почему var i начинается с 0 в Котлине? Простой пример kotlin печатает kotlin.Unit при печати результата функции infix UNRESOLVED_REFERENCE Неразрешенная ссылка: isInitialized Firebase: чистый способ использования полей enum в Kotlin / Java? В чем разница между CoroutineContext и Job в kotlinx.coroutines? Комната не может выбрать конструктор, поскольку подходящие ошибки являются множественными конструкторами Утверждение с сообщением об ошибке в Котине Kotlin Android Firebase Database Hashmap Отправляется в класс Как использовать класс Kotlin в классе java? класс данных kotlin HttpMessageNotReadableException Какова цель Декларации объекта внутри герметичного класса в Котлине? Gradle не будет импортировать зависимость bintray, но не вызывает никакой ошибки

Запустите операцию наложения, не показывая остальную часть приложения.

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

Этот вид имитирует активность вкладок google chrome.

В настоящее время я запускаю свою деятельность через PendingIntent:

val intent = Intent(context, WebOverlayActivity::class.java) //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or PendingIntent.FLAG_ONE_SHOT) intent.putExtra(ARG_URL, ...) intent.action = System.currentTimeMillis().toString() //dummy action val bundle = ActivityOptionsCompat.makeCustomAnimation(context, R.anim.slide_in_right, R.anim.slide_out_right).toBundle() val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT, bundle) 

Эти флаги – это то, что у меня есть, когда я запускаю деятельность в другом месте, но они, похоже, не влияют на это ожидающее намерения. Как уже упоминалось, эта деятельность является полупрозрачной и использует другие виды деятельности.

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

Есть идеи?

Изменить 1: вот манифест активности

 <activity android:name=".WebOverlayActivity" android:theme="@style/AppTheme.Overlay"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!--other data sources--> </intent-filter> </activity> 

Наконец, я нашел жизнеспособное решение. Цель состоит в том, чтобы запустить эту деятельность в новой задаче, поэтому я сделал это, добавив android:launchMode="singleInstance" в манифесте активности. Что меня испортило, так это то, что мне также нужно указать taskAffinity , иначе launchMode будет проигнорирован.

Теперь я могу эффективно использовать наложение для загрузки URL-адресов в других приложениях и вернуться к нему или использовать его из своего собственного приложения и вести себя как любое другое действие.