千家信息网

Android怎样实现悬浮窗全系统版本

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了Android怎样实现悬浮窗全系统版本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。悬浮窗是在系统上显示的内容,好像
千家信息网最后更新 2025年01月20日Android怎样实现悬浮窗全系统版本

这篇文章主要介绍了Android怎样实现悬浮窗全系统版本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

悬浮窗是在系统上显示的内容,好像微信视频聊天时的小窗口一样,在退出软件后依然存在的一个窗口,本博客以窗口中放一个button组件为例,简单展示悬浮窗,其中包括了对Android 6.0以下、Android 6.0到Android 8.0、Android 8.0以上版本的处理,下面开始介绍实现方法:

1、MainActivity中的代码

public Button mFloatingButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化view initView(); } //初始化view private void initView() { mFloatingButton=(Button) findViewById(R.id.floating_btn); mFloatingButton.setOnClickListener(this); } public void startFloatingButtonService(View view) { Log.e("测试流程", "测试流程"); if (FloatingService_Button.isStarted) { Log.e("测试流程2", "测试流程2"); return; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断系统版本 if (!Settings.canDrawOverlays(this)) { Toast.makeText(this, "当前无权限,请授权", Toast.LENGTH_SHORT); Log.e("测试流程3", "测试流程3"); startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())), 0); } else { Log.e("测试流程4", "测试流程4"); startService(new Intent(MainActivity.this, FloatingService_Button.class)); } } else { startService(new Intent(MainActivity.this, FloatingService_Button.class)); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 0) { if (!Settings.canDrawOverlays(this)) { Log.e("测试流程5", "测试流程5"); Toast.makeText(this, "授权失败", Toast.LENGTH_SHORT).show(); } else { Log.e("测试流程6", "测试流程6"); Toast.makeText(this, "授权成功", Toast.LENGTH_SHORT).show(); startService(new Intent(MainActivity.this, FloatingService_Button.class)); } } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.floating_btn : startFloatingButtonService(v); break; } }

思路简单解释:点击弹出悬浮窗按钮时,获取版本并判断"Build.VERSION.SDK_INT >= Build.VERSION_CODES.M"如果系统版本在6.0以下这不需要请求权限,如果系统版本在6.0以上需要进行权限检测以及请求,获取权限后,弹出悬浮框

2、activity_main.xml代码

0