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

フラグがなくても、通常、アクティビティウィンドウは正しいレイアウトで表示されます。ただし、Android 7を搭載したXiaomi Redmi Note 4では、アクティビティレイアウトは表示されません。logcatには次の行しか表示されません。

I /タイムライン:タイムライン:Activity_launch_request時間:281438674インテント:インテント{flg = 0x30000000 cmp = com.test.app / .MainActivity}

これはAndroid 7(API 24)の問題ではないと思います。Android7を搭載した別のデバイスでは、サービスがアクティビティを正常に開始できるためです。たぶん、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.