Aplikasi saya memiliki layanan dan aktivitas. Dari layanan, aktivitas dipanggil dengan kode berikut:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
bahkan tanpa bendera, biasanya jendela aktivitas ditampilkan dengan tata letak yang benar. Namun, pada Xiaomi Redmi Note 4 dengan Android 7, tata letak aktivitas tidak ditampilkan. Saya hanya melihat baris berikut di logcat:
I / Timeline: Timeline: Activity_launch_request time: 281438674 maksud: Maksud {flg = 0x30000000 cmp = com.test.app / .MainActivity}
Saya percaya ini bukan masalah Android 7 (API 24) karena pada perangkat lain dengan Android 7, layanan dapat berhasil memulai aktivitas. Saya kira, MIUI mencegah peluncuran aktivitas dari layanan.
Saya mencoba mengubah bagaimana aktivitas didefinisikan dalam manifes. Saya juga mencoba dengan beberapa flag yang berbeda. Semua tes saya gagal. Saya tidak bisa berhasil memulai kegiatan. Masalah terburuk adalah bahwa tidak ada kesalahan / pengecualian dalam log.
Ada ide tentang ini?
Jawaban:
Di layar Info Aplikasi dari aplikasi Pengaturan sistem> Izin lainnya> Tampilkan jendela sembul saat berjalan di latar belakang.
Ini sepertinya diperkenalkan di MIUI 11.
Sunting: ini adalah sepotong kode yang saya gunakan. Saya menambahkannya ke dalam daftar izin di a
RecyclerView
.UPDATE: Untuk memeriksa apakah izin ini diberikan, Anda dapat menggunakan layanan yang sudah berjalan dan meluncurkan aktivitas transparan boneka, dan dalam
onCreate
panggilan kembali padaLocalBroadcastManager
atau serupa dan Anda akan tahu itu diberikan. Ini adalah solusi yang jelek, tetapi mungkin berguna untuk beberapa.sumber