java– 绘制其他不适用于Android 8.0的应用程序

java– 绘制其他不适用于Android 8.0的应用程序,第1张

概述我有一个应用程序,它有一个小部件,允许聊天作为浮动小部件提供,有点像FB.它适用于较低版本的Android,但由于某种原因,它无法在Android8.0上运行.我已经阅读了权限的更改,在我的AndroidManifest.xml文件中,我已经声明了两个权限…<uses-permissionandroid:name="android.permiss

我有一个应用程序,它有一个小部件,允许聊天作为浮动小部件提供,有点像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的应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1111408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存