猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
防止状态栏扩展
是否有任何方法可以防止用户滑动状态栏(展开)或倒塌?
我正在尝试更换锁屏,似乎这是一项必备功能。有没有可能不需要root特权的方法?
慕神8447489
浏览 433
回答 3
3回答
皈依舞
简短的答案:这是不可能的!现在您是否有兴趣知道为什么这是不可能的:操作系统状态栏有两个权限:EXPAND_STATUS_BAR和STATUS_BAR。前者可以由任何应用程序请求,但后者保留给使用平台签名签名的应用程序(系统应用程序,而不是第三方)。这是可能的展开/折叠系统状态栏(请参阅“如何打开或意图通过拓展状态栏?”),但需要注意的是反射必需的,因为StatusBarManager类不是SDK的一部分。没有上述STATUS_BAR权限的应用程序无法访问Android拨号程序用来禁止状态栏扩展的disable方法。资料来源:个人经验:-)
0
0
0
拉丁的传说
首先,如果您的应用程序未通过手机的rom认证进行签名,则无法修改状态栏;如果尝试对其进行修改,则会出现安全异常。更新:在新的API中,方法是“ collapsePanels”而不是“ collapse”。经过几个小时的工作,我发现的唯一方法是重写活动的“ onWindowFocusChanged”方法,并在失去焦点时(也许用户已触摸通知栏),强制折叠StatusBar,这是代码(适用于Defy + 2.3.5)。您需要在清单上声明以下权限: <uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/> 并重写以下方法:public void onWindowFocusChanged(boolean hasFocus){ try { if(!hasFocus) { Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); Method collapse = statusbarManager.getMethod("collapse"); collapse .setAccessible(true); collapse .invoke(service); } } catch(Exception ex) { }}更新:您还必须通过重写onWindowFocusChanged方法来使用自己的自定义警报对话框,因为警报对话框具有自己的焦点。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Android
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续