Anroid - 活动和对话框不会从 com.android.settings.SubSettings Activity 中打开

问题描述 投票:0回答:0

我正在 Xiaomi Mi 9T Android 10 API 29 上测试我的 Android 应用程序。

流程如下:

在我的辅助功能活动中,我启动辅助功能系统意图

意图打开设置活动,我需要再深入 2 个子设置,直到我可以启用权限

在我的 Accessibility Activity 中有一个计时器,它会一直监视直到授予权限:

public void timerStart() {
    this.timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            if (isAccessibilityEnabled()) {
                Accessibility.this.timer.cancel();
                
                //Execution passes through here, but ActivityB never starts
                Intent intent = new Intent(Accessibility.this, ActivityB.class);
                context.startActivity(intent);
                return;
            }
        }
    }, 0, 500);
}

我做了一个测试。我也尝试打开一个对话框而不是一个活动,但也没有任何反应。

public void timerStart() {
    this.timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            if (isAccessibilityEnabled()) {
                Accessibility.this.timer.cancel();
                
                //Execution passes through here, but the Dialog is never opened
                new Handler(Looper.getMainLooper()).post(new Runnable() {
                    @Override
                    public void run() {
                        new AlertDialog.Builder(Accessibility.this)
                                .setMessage("Teste")
                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                    }})
                                .show();
                    }
                });
                
                return;
            }
        }
    }, 0, 500);
}

我又做了一个测试。我在计时器的运行方法中运行了下面的代码,并验证了顶级 Activity 是 com.android.settings.SubSettings。 所以它得出的结论是我无法从 SubSettings 开始任何事情

public void timerStart() {
    this.timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            if (isAccessibilityEnabled()) {
                Accessibility.this.timer.cancel();
                
                ActivityManager mngr = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
                List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(0);
                for (ActivityManager.RunningTaskInfo info : taskList) {
                    Log.i(TAG, "############################################");
                    Log.i(TAG, "info.numActivities: " + info.numActivities);
                    Log.i(TAG, "info.numActivities: " + info.numActivities);
                    Log.i(TAG, "info.baseActivity: " + info.baseActivity.getClassName());
                    Log.i(TAG, "info.topActivity: " + info.topActivity.getClassName());
                }
                
                return;
            }
        }
    }, 0, 500);
}

控制台输出:

I/Accessibility: ############################################
I/Accessibility: info.numActivities: 4
I/Accessibility: info.baseActivity: com.myapp.android.activity.Accessibility
I/Accessibility: info.topActivity: com.android.settings.SubSettings
I/Accessibility: ############################################
I/Accessibility: info.numActivities: 1
I/Accessibility: info.baseActivity: com.miui.home.launcher.Launcher
I/Accessibility: info.topActivity: com.miui.home.launcher.Launcher

计时器的运行方法内部可能发生了什么,它阻止了任何 Activity 或任何 Dialog 打开?

非常感谢

android accessibility android-permissions xiaomi
© www.soinside.com 2019 - 2024. All rights reserved.