状态栏中的Android添加视图
这是我添加视图的代码:状态栏中的Android添加视图,android,notifications,statusbar,Android,Notifications,Statusbar,这是我添加视图的代码: LayoutInflater layoutInflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); TextView tv = (TextView) layoutInflater.inflate(R.layout.textview, null); final View view = tv; Wind
LayoutInflater layoutInflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView tv = (TextView) layoutInflater.inflate(R.layout.textview, null);
final View view = tv;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 25,
WindowManager.LayoutParams.TYPE_STATUS_BAR,
WindowManager.LayoutParams.FLAG_SCALED
, PixelFormat.TRANSLUCENT);
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
wm.addView(view, lp);
但这会给我一个错误:
android.view.WindowManager$BadTokenException:无法添加窗口android.view.ViewRootImpl$W@41668948--此窗口类型的权限被拒绝
所以我在android manifast中添加了权限
<uses-permission android:name="android.permission.STATUS_BAR" />
但还是有错误,我需要帮助 好,这应该可以:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
好,这应该可以:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
从代码片段中,您似乎正在尝试创建一个新的状态栏窗口,但这是不可能的。(有一个状态栏,由系统UI管理。)
你能描述一下你想做什么吗?通常,您使用和API与状态栏进行交互。从代码片段看,您好像在尝试创建一个新的状态栏窗口,这是不可能的。(有一个状态栏,由系统UI管理。)
你能描述一下你想做什么吗?通常,您可以使用和API与状态栏进行交互。为了在状态栏顶部绘制视图,在阅读了这么多堆栈溢出帖子后,以下组合对我很有用: 1-您的服务或活动中需要有此布局参数的WindowManager:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
statusBarHeight,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
2-您只需要在android清单上拥有此权限:
uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"
希望有帮助。在我的例子中,我只需要将状态栏染成黄色或绿色,以表示用户当前正在进行一个活动调用为了在状态栏顶部绘制视图,这是在阅读了这么多堆栈溢出帖子后对我有效的组合: 1-您的服务或活动中需要有此布局参数的WindowManager:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
statusBarHeight,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
2-您只需要在android清单上拥有此权限:
uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"
希望有帮助。在我的例子中,我只需要将状态栏着色为黄色或绿色,以表示用户当前正在进行一个活动调用您是否知道问题可能是什么?您是否可以包括堆栈跟踪?您是否有任何其他想法问题可能是什么?您是否可以包括堆栈跟踪,但是点击在这个窗口管理器上没有启用,我尝试过改变标志,但是我不能让它听到点击(以前使用不同的标志工作正常),有解决方案吗。。。我在这个区域显示自定义的祝酒词很好,但是在这个窗口管理器上没有启用点击,我尝试过改变标志,但是我不能让它听到点击(以前使用不同的标志工作正常),有没有解决方案。。。我在这个区域显示定制的祝酒词