MIUI 10, hizmetin faaliyete başlamasına izin vermez - Xiaomi Redmi Note


12

Uygulamamın bir hizmeti ve etkinliği var. Hizmetten, etkinlik aşağıdaki kodla çağrılır:

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

bayraklar olmasa bile, normalde etkinlik penceresi doğru düzeniyle görüntülenir. Ancak, Android 7 yüklü Xiaomi Redmi Note 4'te etkinlik düzeni görüntülenmez. Logcat üzerinde sadece şu satırı görüyorum:

I / Zaman Çizelgesi: Zaman Çizelgesi: Activity_launch_request time: 281438674 niyet: Amaç {flg = 0x30000000 cmp = com.test.app / .MainActivity}

Android 7 (API 24) sorunu olmadığına inanıyorum çünkü Android 7'ye sahip başka bir cihazda hizmet etkinliği başarıyla başlatabilir. MIUI, aktivitenin hizmete girmesini engelliyor sanırım.

Faaliyetin bildirimde nasıl tanımlandığını değiştirmeye çalıştım. Ayrıca birkaç farklı bayrakla denedim. Tüm testlerim başarısız oldu. Etkinliği başlatmayı başaramadım. En kötü sorun, günlüklerde hata / istisna olmamasıdır.

Bu konuda bir fikrin var mı lütfen?


MIUI 11'de de aynı sorun
AlexS

Yanıtlar:


16

Sistem Ayarları uygulamasından Uygulama Bilgileri ekranında> Diğer izinler> Arka planda çalışırken açılır pencereleri görüntüle.

Bu MIUI 11'de tanıtıldı.

Düzenleme: İşte kullandığım kod parçası. Bunu a RecyclerView. İçindeki bir izin listesine ekliyorum .

Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
String miui = (String) get.invoke(c, "ro.miui.ui.version.name");
if (miui != null && miui.contains("11")) {
            PermissionData mPopup = new PermissionData();
            mPopup.text = "Other permissions > Display pop-up while in background";
            mPopup.onClickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                    Uri uri = Uri.fromParts("package", getPackageName(), null);
                    intent.setData(uri);
                    startActivity(intent);
                }
            };

            mPermissionData.add(mPopup);
}

GÜNCELLEME: Bu iznin verilip verilmediğini kontrol etmek için halihazırda çalışan bir hizmeti kullanabilir ve sahte bir şeffaf etkinlik başlatabilir ve onCreategeri çağrısında bir LocalBroadcastManagerveya benzeri bir öğeye geri dönüp verdiğinizi bilirsiniz. Bu çirkin bir çözüm, ancak bazıları için yararlı olabilir.


teşekkür ederim. sorun gerçekten. uygulama içinde bu izni istemek için herhangi bir yolu var mı? veya programlı olarak eklensin mi?
ilker Aktuna

Hiçbiri farkında değilim. Ben uygulama bilgi ekranına yönlendiriyorum ve MIUI üzerinde olup olmadığını etkinleştirmek için söylüyorum ..
Alex Newman

ancak bunu yapmak için uygulamayı başlatmanız gerekir. bunu nasıl yapıyorsun ? bildirimler yoluyla?
ilker Aktuna

Uygulamayı ilk yapılandırırken başka bir gerekli izin istediğimde yaparım.Yani ana uygulamadan değil, hizmetten.
Alex Newman

1
MIUI için gerçekten yararlı bilgiler, çünkü sadece herhangi bir kodu değiştirmeden Arka Plan hizmetinden başlatılan etkinliğe izin vermek.
caka
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.