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

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

xjtudll10年前 (2016-02-01)技术心得15510

参考资料:

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://xjtudll.cn/Exp/385/

标签: Android
分享给朋友:

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

c# toolstrip控件怎么把左边的几个小点去掉

c# toolstrip控件怎么把左边的几个小点去掉

c# toolstrip控件怎么把左边的几个小点去掉 小点如下图所示: 解决办法: 选中你的toolstrip 然后属性 属性中有个 GripStyle 设置Hidden...

Android Studio xml编译error: Apostrophe not preceded by \

Android Studio xml编译error: Apostrophe not preceded by \

问题: Resource Path Location Type error: Apostrophe not preceded by \ (in Search' Titles) strings.xml 原因: 在string.xml中使用了转义字符 解决办法: 在编译出...

IOS Autolayout ScrollView无法滚动的解决办法

参考资料: http://www.cocoachina.com/bbs/read.php?tid=175749 问题: 设定autolayout之后,发现scrollview无法滚动了,导致无法查看所有的内容。在viewDidLoad里重新设定scrollview的contentSize,还是不行。...

气压传感器选型指南

气压传感器选型指南

文章来源:传感器视角 详细出处:http://blog.21ic.com/user1/6459/archives/2010/68599.html 在我给客户做技术的工作当中,经常遇到客户问到这样的问题,"目前市场上气压传感器都各有什么优势?""我们应该如何去选型?&...

Mac OS X:如何监测系统时间变更

目的:   当系统时间变更时,需要在app中知道。 其中系统时间变更包括时区,年月日时分秒等的变动,包括手动和自动修改 方法: 使用NSSystemClockDidChangeNotification Mac 10.6开始支持 Apple added in NSSystemClockDi...

运放平衡电阻的作用

运放平衡电阻的作用

运放输入端所接电阻要平衡,目的是使集成运放两输入端的对地直流电阻相等,运放的偏置电流不会产生附加的失调电压。但有些电路对失调电压要求并不高,例如交流音频放大器。有些运放偏置电流很小,即使输入端电阻不平衡也不会对失调电压产生什么影响,这些电路就可以不要求输入端电阻平衡。 以反相放大器来说明平衡电阻的...

发表评论

访客

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