簡體   English   中英

MIUI 10 不允許服務啟動活動 - 小米紅米 Note

[英]MIUI 10 doesn't let service start activity - Xiaomi Redmi Note

我的應用程序有一項服務和一項活動。 從服務中,使用以下代碼調用活動:

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

即使沒有標志,通常活動窗口也會以其正確的布局顯示。 但是,在搭載 Android 7 的小米紅米 Note 4 上,不顯示活動布局。 我只在 logcat 上看到以下行:

I/Timeline: Timeline: Activity_launch_request time:281438674 intent:Intent { flg=0x30000000 cmp=com.test.app/.MainActivity }

我相信這不是 Android 7 (API 24) 問題,因為在另一台裝有 Android 7 的設備上,服務可以成功啟動活動。 我猜想,MIUI 正在阻止從服務中啟動該活動。

我嘗試更改清單中活動的定義方式。 我還嘗試了幾種不同的標志。 我所有的測試都失敗了。 我無法成功開始活動。 最糟糕的問題是日志中沒有錯誤/異常。

請對此有任何想法嗎?

在系統設置應用程序 > 其他權限 > 在后台運行時顯示彈出窗口的應用程序信息屏幕中。

這似乎是在 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或類似的,你會知道它被授予。 這是一個丑陋的解決方案,但它可能對某些人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM