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来显示。

你可能感兴趣的:(Service启动Dialog及小米手机无法弹出Dialog问题)