MIUI 10 ไม่อนุญาตให้มีกิจกรรมเริ่มบริการ - Xiaomi Redmi Note


9

แอพของฉันมีบริการและกิจกรรม จากบริการกิจกรรมถูกเรียกด้วยรหัสต่อไปนี้:

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

แม้ไม่มีแฟล็กโดยปกติหน้าต่างกิจกรรมจะแสดงด้วยโครงร่างที่ถูกต้อง อย่างไรก็ตามใน Xiaomi Redmi Note 4 พร้อม Android 7 รูปแบบกิจกรรมจะไม่ปรากฏขึ้น ฉันเห็นบรรทัดต่อไปนี้บน logcat เท่านั้น:

I / Timeline: Timeline: Activity_launch_request เวลา: 281438674 เจตนา: เจตนา {flg = 0x30000000 cmp = com.test.app / .MainActivity}

ฉันเชื่อว่านี่ไม่ใช่ปัญหา Android 7 (API 24) เพราะบนอุปกรณ์อื่นที่ใช้ Android 7 บริการสามารถเริ่มกิจกรรมได้สำเร็จ ฉันเดาว่า MIUI กำลังขัดขวางไม่ให้มีการเปิดตัวกิจกรรม

ฉันพยายามเปลี่ยนวิธีการกำหนดกิจกรรมในรายการ ฉันยังลองด้วยธงที่แตกต่างกัน การทดสอบทั้งหมดของฉันล้มเหลว ฉันไม่สามารถเริ่มต้นกิจกรรมได้สำเร็จ ปัญหาที่เลวร้ายที่สุดคือไม่มีข้อผิดพลาด / ข้อยกเว้นในบันทึก

ความคิดเห็นใด ๆ เกี่ยวกับเรื่องนี้โปรด?


ปัญหาเดียวกันกับ MIUI 11
AlexS

คำตอบ:


12

ในหน้าจอข้อมูลแอปจากแอปการตั้งค่าระบบ> สิทธิ์อื่น ๆ > แสดงหน้าต่างป๊อปอัปขณะที่ทำงานในพื้นหลัง

ดูเหมือนว่าจะเปิดตัวใน MIUI 11

แก้ไข: นี่คือส่วนหนึ่งของรหัสที่ฉันใช้ RecyclerViewฉันจะเพิ่มที่เป็นรายการที่ได้รับอนุญาตใน

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);
}

อัปเดต: หากต้องการตรวจสอบว่าการอนุญาตนี้ได้รับอนุญาตหรือไม่คุณสามารถใช้บริการที่กำลังทำงานอยู่แล้วและเปิดตัวกิจกรรมที่โปร่งใสจำลองและในการonCreateโทรกลับบนLocalBroadcastManagerหรือใกล้เคียงและคุณจะรู้ว่าได้รับอนุญาต มันเป็นทางออกที่น่าเกลียด แต่มันอาจมีประโยชน์สำหรับบางคน


ขอบคุณ. นั่นเป็นปัญหาจริงๆ มีวิธีใดที่จะขออนุญาตนี้ภายในแอพ? หรือเพิ่มโปรแกรมหรือไม่
ilker Aktuna

ไม่มีที่ฉันรู้ ฉันเปลี่ยนเส้นทางไปที่หน้าจอข้อมูลแอปและบอกให้พวกเขาเปิดใช้งานหากพวกเขาอยู่ใน MIUI ..
อเล็กซ์นิวแมน

แต่คุณต้องเริ่มแอป คุณจะทำอย่างไรมันได้หรือไม่ ? ผ่านการแจ้งเตือน?
ilker Aktuna

ฉันทำเมื่อฉันขอสิทธิ์อื่นที่จำเป็นเมื่อมีการกำหนดค่าแอปครั้งแรกดังนั้นจากแอปหลักไม่ใช่บริการ
Alex Newman

1
ข้อมูลที่เป็นประโยชน์จริง ๆ สำหรับ MIUI เพียงให้สิทธิ์การใช้งานเริ่มต้นจากบริการพื้นหลังโดยไม่ต้องเปลี่ยนรหัสใด ๆ
Panache
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.