1. 程式人生 > >android不依賴具體activity彈出Dialog對話方塊,即全域性性對話方塊

android不依賴具體activity彈出Dialog對話方塊,即全域性性對話方塊

先說具體做法,原因在其後給出:

寫好Alter功能塊後,在alter.show()語句前加入:

  1. alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);  

注:alter為AlertDialog型別物件

然後在AndroidManifest.xml中加入許可權:

  1. "android.permission.SYSTEM_ALERT_WINDOW">  
下面進行簡單的解釋:

如果只在Service中寫入常在Activity中使用的建立Alter的程式碼,執行時是會發生錯誤的,因為Alter的顯示需要依附於一個確定的Activity類。而以上做法就是宣告我們要彈出的這個提示框是一個系統的提示框,即全域性性質的提示框,所以只要手機處於開機狀態,無論它現在處於何種介面之下,只要呼叫alter.show(),就會彈出提示框來。

轉載自  http://blog.csdn.net/twoicewoo/article/details/7448584

------------------------------------------------------------------

  1.  d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG); //系統中關機對話方塊就是這個屬性
  2.                 //d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);  //視窗可以獲得焦點,響應操作
  3.                 //d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);  //視窗不可以獲得焦點,點選時響應視窗後面的介面點選事件

-------------------------------------------------------------------

final WindowManager wm = (WindowManager) context.getSystemService("window");

                            WindowManager.LayoutParams para = new WindowManager.LayoutParams();

                            para.height = -1;

                            para.width = -1;

                            para.format = 1;

                            para.flags = LayoutParams.FLAG_FULLSCREEN | LayoutParams.FLAG_LAYOUT_IN_SCREEN;

                            para.type = LayoutParams.TYPE_SYSTEM_ALERT;

                            final View mView = LayoutInflater.from(context).inflate(

                                    R.layout.xxxxxxxxxx, null);

                            wm.addView(mView, para);

                            mView.findViewById(R.id.button).setOnClickListener(new OnClickListener() {

                                @Override

                                public void onClick(View v) {

                                    wm.removeView(mView);

                                }

                            });

參考 http://www.dewen.org/q/3746

---------------------------------------------