【Android】:关于App开机自启动和禁止状态栏下拉的愚解

1.APP开机自启动:
首先声明所需要的权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

然后在intent-filter中添加开机完成Action:

<action android:name="android.intent.action.BOOT_COMPLETED" />

注意:
app开机自启动时需设置应用为主应用和默认应用,即在intent-filter中添加category为HOMEDEFAULT的配置

<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />

若应用未配置此两者则自启动无效。

2.禁止状态栏下拉:
法一(亲测可用):首先声明所需要的权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

重写CustomViewGroup继承ViewGruop用于拦截手势事件:

public static class CustomViewGroup extends ViewGroup {

    public CustomViewGroup(Context context) {
        super(context);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        Log.v("customViewGroup", "********** Status bar swipe intercepted");
        return true;
    }
}

定义一个新的CustomViewGroup:

protected CustomViewGroup blockingView = null;

定义一个函数用于实现状态栏拦截下拉:

protected void disableStatusBar() {

    WindowManager manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE));

    WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
    localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
    localLayoutParams.gravity = Gravity.TOP;
    localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |

            // this is to enable the notification to receive touch events
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |

            // Draws over status bar
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

    localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
    localLayoutParams.height = (int) (40 * getResources().getDisplayMetrics().scaledDensity);
    localLayoutParams.format = PixelFormat.TRANSPARENT;

    blockingView = new CustomViewGroup(this);
    manager.addView(blockingView, localLayoutParams);
}

然后在主Activity的onCreate中调用disableStatusBar()

注意:使用此种方法会导致应用退出回到主界面时也无法对状态栏进行下拉,因为已经将状态栏给锁死了了,所以要对app进行退出监听,若应用进行了退出操作(即不杀死app回到主界面和杀死app都要进行监听),则将状态栏进行解锁,具体实现请有需求的同学自行补充

注:
法二:之前在查询百度和Google的时候有人推荐使用StatusBarManager这个类,但是这个类并不是android官方sdk所含有的类,需额外引用现有的类;
法三:这个方法改动比较多且不太友好,不太推荐,直接修改系统UI文件来达到禁止状态栏下拉的效果。

由于时间和篇幅及需求的关系,法二和法三并没有去具体实现测试过,有兴趣的同学可以尝试去做下。

活动

阿里云活动

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值