java – 绘制其他不适用于Android 8.0的应用程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 绘制其他不适用于Android 8.0的应用程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1548字,纯文字阅读大概需要3分钟。
内容图文
![java – 绘制其他不适用于Android 8.0的应用程序](/upload/InfoBanner/zyjiaocheng/735/e294e22d873a4f57b0c2b2945f7f89d7.jpg)
我有一个应用程序,它有一个小部件,允许聊天作为浮动小部件提供,有点像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的应用程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。