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