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); } } } }