气功大师王林老婆,微信号怎么注销,洛南县人民政府
一、手机版本问题,大多数文章没有涉及这个点,导致他们的代码并无法正常使用
m版本以上需要使用的type--> type_application_overlay
alertdialog.builder builder=new alertdialog.builder(getapplicationcontext()); builder.settitle("提示"); builder.setmessage("service弹框"); builder.setnegativebutton("明白了",null); dialog dialog=builder.create(); if (build.version.sdk_int >= build.version_codes.m){//6.0 dialog.getwindow().settype(windowmanager.layoutparams.type_application_overlay); }else { dialog.getwindow().settype(windowmanager.layoutparams.type_system_alert); } dialog.show();
同时,因为涉及不同版本的android系统
androidmanifest.xml 中声明同时需要这两个类型对应的权限
<uses-permission android:name="android.permission.system_alert_window"/> <uses-permission android:name="android.permission.system_overlay_window" />
二、权限问题,service中弹出的对话框为系统弹框,在m版本以上需要申请悬浮窗权限
android 6.0 以前悬浮窗是默认允许的
注意android 6.0以后的使用
因为悬浮窗权限 system_alert_window
属于特殊权限 ,需要自己特别单独申请
特殊权限,顾名思义,就是一些特别敏感的权限,在android系统中,主要由两个
system_alert_window(设置悬浮窗,进行一些黑科技)
write_settings (修改系统设置)
关于上面两个特殊权限的授权,做法是使用startactivityforresult启动授权界面来完成。
申请方式:
private static final int request_code = 1; private void requestalertwindowpermission() { intent intent = new intent(settings.action_manage_overlay_permission); intent.setdata(uri.parse("package:" + getpackagename())); startactivityforresult(intent, request_code); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if (requestcode == request_code) { if (build.version.sdk_int >= build.version_codes.m) { if (settings.candrawoverlays(this)) { log.i("xqxinfo", "onactivityresult granted"); } } } }
总结
到此这篇关于浅析android service中实现弹出对话框的坑的文章就介绍到这了,更多相关service实现弹出对话框内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论