当前位置:首页 > 技术心得 > 正文内容

Android的Service中弹出窗口解决方法

xjtudll11年前 (2016-02-01)技术心得20010

参考资料:

http://www.cnblogs.com/fbsk/archive/2011/12/28/2304523.html

http://blog.csdn.net/djun100/article/details/23756681

问题:

我们在使用Service时,经常会碰到这样的情况,比如用一个service做下载,此时service不一定在最前端,有可能是其它的Activity,当下载完成时,如何能弹出对话框,让弹出框在当前activity之上。

解决方法:

一、使用全局提示框(悬浮窗)

1、使用系统的Dialog需要在清单文件中添加权限,否则不会显示出来

android.permission.SYSTEM_ALERT_WINDOW

另外,需要注意的是,某些android手机默认是不允许悬浮窗的,因此即便你添加了系统权限,也没有悬浮窗效果的。

2、在alert show() 调用之前添加以下代码:

dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));

参考代码如下:

Builder builder = new AlertDialog.Builder(this);

    builder.setTitle("提示");

    builder.setMessage("该下车了");

    builder.setNegativeButton("取消", new OnClickListener() {

        @Override

        public void onClick(DialogInterface dialog, int which) {

        }

    });

    builder.setPositiveButton("确定", new OnClickListener() {

        @Override

        public void onClick(DialogInterface dialog, int which) {

        }

    });

    final AlertDialog dialog = builder.create();

    **//在dialog  show方法之前添加如下代码,表示该dialog是一个系统的dialog**

dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));

    new Thread(){

        public void run() {

            SystemClock.sleep(4000);

            hanlder.post(new Runnable() {

                @Override

                public void run() {

                    dialog.show();

                }

            });

            };

    }.start();

}

二、在service中启动一个activity,设置activity主题为dialog,这样看起来像是弹出窗口

  在Service中启动一个activity,这个activity的主题为dialog,需要注意的是在启动Intent时需要加上Intent.FLAG_ACTIVITY_NEW_TASK 否则会报错

1)设置activity的主题为dialog:在AndroidManifest.xml里定义activity时,加上代码android:theme="@android:style/Theme.Dialog"

2)在Service中启动activity:

Intent it =new Intent(this,AlertActivity.class); 
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(it);

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/385/

标签: Android
分享给朋友:

“Android的Service中弹出窗口解决方法” 的相关文章

聚合物电池的容量如何计算

参考资料: http://www.18650.com.cn/news/15373393.html 1、测量开路电压 电池端电压和剩余容量之间有一个确定的关系,测量电池端电压即可估算其剩余容量。 这种方法的局限是: 1)对于不同厂商生产的电池,其开路电压与容量之间的关系各不相同。 2)只有通过测...

Proteus7.6SP4汉化补丁

不得不说国内牛人还是相当多的。尤其是sexywp大牛,看他Proteus破解的相当好。下面这个Proteus 7.6 SP4汉化补丁就是由他修改的。下载地址:http://ishare.iask.sina.com.cn/f/6733828.html介绍:用7.5的汉化修改而来,先和谐,再用汉化补丁覆...

解决android studio弹出

解决android studio弹出"waiting for debugger"

方式一: 这种方法可能需要配置环境变量 win+R -> cmd -> adb kill-server,adb start-server 方式二: 当点击debug app时(卡在"waiting for debug"),则如图点击,然后点击确定即可! 本文为转载...

WinRAR创建自解压程序

WinRAR创建自解压程序

前面提到了用FilePacker来打包文件夹(http://www.xjtudll.cn/Exp/63/),这次介绍的是用WinRAR来创建自解压程序,从而实现发布单文件程序的目的。当然,你也可以另作他用。WinRAR相当普及,几乎人人电脑上都有。如何用WinRAR创建自解压程序呢?且看下面分解。1...

SQL去掉小数点有效数字后的所有0

第一种方法 select cast(2.5000000000000   as  real) select cast(2   as  real) select cast(2.00000   as  r...

PlatformIO串口无输出

PlatformIO串口无输出

问题:同样的串口打印代码,在Arduino IDE里可以正常输出,但是在PlatformIO里看不到任何输出硬件:ESP32-S3 Camera解决方法:This is because DTR and RTS both are connected to the RESET pin and GPIO...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。