我有一个应用程序,它有一个小部件,允许聊天作为浮动小部件提供,有点像FB.它适用于较低版本的Android,但由于某种原因,它无法在AndroID 8.0上运行.我已经阅读了权限的更改,在我的AndroIDManifest.xml文件中,我已经声明了两个权限…
<uses-permission androID:name="androID.permission.SYstem_ALERT_WINDOW"/><uses-permission androID:name="androID.permission.TYPE_APPliCATION_OVERLAY"/>
然后在我的活动中,我正在检查权限,如果它被授予,它将尝试添加新视图…
if(Settings.canDrawOverlays(this)) { initializeChatheadsVIEw();}
initializeChatheadsVIEw,只是将布局添加到窗口.我已启用权限,我甚至可以看到它已启用,如果我进入设备上的设置,我可以看到我的应用程序列在“显示在其他应用程序”权限页面,所以它确实有权限,但每次我尝试添加应用程序崩溃的视图,我收到消息…
Unable to add window androID.vIEw.VIEwRootImpl$W@f6948a0 — permission
denIEd for window type 2002
我不明白为什么它不起作用.清单具有较旧版本和较新版本的权限,系统专门检查“canDrawOverlays”,它在我拥有的每个模拟器上运行良好,除了运行AndroID 8.0的模拟器.
如果需要,我非常乐意展示更多代码.任何帮助将非常感激.谢谢.
解决方法:
我发现了这个问题.如果其他人在AndroID 8.0中使用其他应用程序的应用程序有问题,我不得不改变我构建窗口的方式….
int layoutType;if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { layoutType = WindowManager.LayoutParams.TYPE_PHONE;} else { layoutType = WindowManager.LayoutParams.TYPE_APPliCATION_OVERLAY;}params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, layoutType, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
现在它完美无缺.
总结以上是内存溢出为你收集整理的java – 绘制其他不适用于Android 8.0的应用程序全部内容,希望文章能够帮你解决java – 绘制其他不适用于Android 8.0的应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)