Пиша приложение с две основни дейности:
- MainActiviy
- DialogActivity
MainActivity е типичен прозорец на приложение, а DialogActivity е дейност, която съм стилизирал да изглежда като диалогов прозорец чрез настройка android:theme="@style/Theme.AppCompat.Light.Dialog"
От вътрешността на MainActivity мога да стартирам DialogActivity със следния код.
val intent = Intent(this, DialogActivity::class.java)
startActivity(intent)
След това диалоговият прозорец се появява над основния по следния начин:
В допълнение към това бих искал също да мога да стартирам диалоговия прозорец, като докосна известие. Ако имам отворено друго приложение и докосна известието, диалоговият прозорец се появява върху другото приложение, както искам:
Ако обаче в момента имам отворена MainActivity и след това докосна известието, диалоговият прозорец се появява върху празен фон:
Това се случва въпреки факта, че диалоговият прозорец се появява "отгоре" на основния прозорец на дейността в екрана за преглед:
И така, въпросът ми е: Ако имам MainActivity на преден план и след това стартирам DialogActivity, като докосна подходящо известие, мога ли да накарам DialogActivity да се показва в горната част на отворения прозорец на MainActivity?
С други думи, когато докосна известието, искам да изглежда като първата картина, ако MainActivity вече е отворена на преден план, като втората картина, ако друго приложение е на преден план, и като третото само ако няма приложения отворен в момента.
Използвам следното PendingIntent, за да стартирам дейността от известието. Може би има специален набор от флагове за намерения, които правят това, което искам? Или може би трябва да направя нещо по-драстично като сливане на двете отделни дейности в една дейност?
val intent = Intent(this, DialogActivity::class.java)
intent.flags = 0
val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
Екранните снимки са от емулатор, работещ с Android 9 (Api ниво 28)
MainActivity
от известието, вместоDialogActivity
, и предайте някои данни наMainActivity
, за да посочите, че го стартирате от известието, и ако тези данни са налични, стартирайтеDialogActivity
- person hiddeneyes02   schedule 26.10.2019