Service启动Dialog及小米手机无法弹出Dialog问题

1、Service中启动Dialog

默认情况下,Dialog需要依附在一个Activity或Fragment上,无法直接在Service弹出一个Dialog。
如果需要在在servcie中显示,则需要把dialog设置成一个系统的dialog,即全局 性质的提示框。

1)需要在AndroidMan`这里写代码片`ifest.xml中添加权限   
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2)将Dialog设置为:
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
3)代码实现
AlertDialog.Builder builder = new Builder(mContext);  
builder.setMessage("msg info");  
builder.setTitle("title");
builder.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//
Dailog dialog = builder.create();
//
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics(); 
wm.getDefaultDisplay().getMetrics(dm);
if (dm.heightPixels > dm.widthPixels) {
        lp.width = dm.widthPixels;
}
else {
        lp.width = (int) (dm.widthPixels * 0.8f);
}
dialog.getWindow().setAttributes(lp);

dialog.show();  

2、小米手机上Service无法弹出Dialog问题
1)需要设置应用 显示悬浮窗口
设置 -> 其他应用管理 -> 相关应用 -> 页面底部的权限管理 -> 勾选显示悬浮窗

2)可以使用Dialog样式的Activity来显示。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值