还有一个 android 以编程方式显示主屏幕

Yet another android show home screen programmatically

我想制作一个以切换到主屏幕为唯一目的的应用程序(参见背景故事)。我不知道在其他phones上的行为,但在荣耀8上,先点击主屏幕按钮切换到之前的主屏幕,然后重新点击主屏幕按钮切换到默认主屏幕。抱歉,我不知道区分主屏幕和 "home-home screen" 的技术术语,带有高亮房屋的主屏幕。单击主屏幕按钮无法访问此主屏幕。

我现在有一个可行的解决方案,但它有两个主要的外观缺陷:

  1. 由于荣耀8需要两次点击主屏幕按钮,因此在源代码中实现了两次。因为动画我还需要延迟:

    public class MainActivity extends AppCompatActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        //Came with the hellow world app and apparently cannot be removed
        super.onCreate(savedInstanceState);
    
        //First "virtual click" of home button
        startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));
    
        //Delay to allow the animation to complete
        try {
            Thread.sleep(800);
        } catch (InterruptedException e) {
          //Not really doing anything clever
        }
    
        //Second "virtual click" of home button
        startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));
    
        //Close the app. (I know, it's deprecated)
        this.finishAffinity();
    }
    

    }

这不是一个非常优雅的解决方案。直接转到 "home-home screen" 会更精简,但如果有解决方案,很难找到如何转到主屏幕的大量答案。

  1. 当应用程序启动时,应用程序 window 在启动显示主屏幕的过程之前打开。因此屏幕上出现闪烁 - 也不是很优雅。应用程序无法在后台启动吗?

任何朝着正确方向的推动都会受到赞赏。

背景故事:

我有荣耀8,我想配置单击智能按钮显示主屏幕。这不是一个选项,但该按钮可以启动显示主屏幕的应用程序。因为,phone解锁后,谁会想直接跳转到信息最多的页面呢?

好吧,所以我还没有解决post中实际的两个问题,这是与编程相关的。但是,我已经解决了我想做的事情(参考背景故事)。

基本上我所做的就是安装 tasker 和 tasker app factory。在tasker中,我做了一个显示主屏幕的任务。同样在这里它需要执行两次才能转到"home-home screen"。在两者之间添加 100 毫秒的延迟。看起来很光滑。没有 windows 弹出,从你所在的任何应用程序到主屏幕,然后它滑到 "home-home screen",这是一个很好的平滑过渡。导出此任务并将智能按钮配置为 运行 单击智能按钮时的此项。