重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

Android怎样实现悬浮窗全系统版本-创新互联

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

佳木斯网站建设公司创新互联,佳木斯网站设计制作,有大型网站制作公司丰富经验。已为佳木斯1000+提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的佳木斯做网站的公司定做!

悬浮窗是在系统上显示的内容,好像微信视频聊天时的小窗口一样,在退出软件后依然存在的一个窗口,本博客以窗口中放一个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代码

 

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP