1.判断版本、权限
try{
//判断当前系统版本
if(Build.VERSION.SDK_INT>=23) {
//判断权限是否已经申请过了(加上这个判断,则使用的悬浮窗的时候;如果权限已经申请则不再跳转到权限开启界面) if (!Settings.canDrawOverlays(this)){
//申请权限 Intent intent2=new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); startActivityForResult(intent2, 1); }else{
//创建悬浮窗 Intent intent3 = new Intent(MainActivity.this, MenuService.class); startService(intent3); } }else{ Intent intent3 = new Intent(MainActivity.this, MenuService.class); startService(intent3); } System.out.println("Build.VERSION.SDK_INT::::"+Build.VERSION.SDK_INT); }catch (Exception e){ e.printStackTrace(); }
2.回调结果
@RequiresApi(api = Build.VERSION_CODES.M) protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if(Build.VERSION.SDK_INT>=23) { if (!Settings.canDrawOverlays(this)) { Toast.makeText(MainActivity.this, "权限授予失败,无法开启悬浮窗", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "权限授予成功!", Toast.LENGTH_SHORT).show(); //创建悬浮窗 Intent intent = new Intent(MainActivity.this, MenuService.class); startService(intent); } } } }
本文介绍了一种在Android应用中实现悬浮窗功能的方法。主要内容包括:如何判断设备的系统版本并据此决定是否请求悬浮窗权限,以及如何通过代码来申请权限。若权限申请成功,将启动悬浮窗服务;若失败,则会显示提示信息。此外,还提供了onActivityResult方法的实现,用于处理权限申请的结果。
6286

被折叠的 条评论
为什么被折叠?



