android彈出了一個全域性性質的對話方塊
今天學習android開發的時候,樓主看的是網上很火的《第一行程式碼----Android》,書中在介紹完廣播的時候,寫了一個案例,模擬QQ被迫下線的功能。
具體思路大概是,在使用者登入系統之後,在主介面點選一個按鈕傳送一個訊息,程式本身接收到這個訊息,彈出一個系統級的對話方塊提示使用者被迫下線,使用者點選確定按鈕之後,即退出到登入介面。
邏輯比較簡單,下面是廣播接收器程式碼:
書上介紹,需要彈出一個系統級對話方塊,也就是這個對話方塊不論是在哪個活動,都可以彈出這個對話方塊。所以要設定對話方塊的屬性為:public class ForceReceiver extends BroadcastReceiver { // 接收到廣播之後,關閉所有的活動,開啟登入活動 @Override public void onReceive(final Context context, Intent intent) { // 彈出對話方塊 AlertDialog.Builder alert = new AlertDialog.Builder(context); alert.setTitle("溫馨提示"); alert.setMessage("系統檢測到異常,您將被迫下線."); alert.setCancelable(false); alert.setPositiveButton("確定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intentCreate = new Intent(context, LoginActivity.class); intentCreate.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intentCreate); ActivityCollector.finishAll(); } }); AlertDialog alertDialog = alert.create(); alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show(); } }
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
最後在AndroidManifest.xml中加上許可權:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
但是我部署到手機上點選的傳送廣播的時候,程式直接崩了,出現了以下異常:
java.lang.RuntimeException: Unable to start receiver
覺得很納悶,都是按照文件上的思路,怎麼就出錯了。查看了好多資料,終於知道,原來是因為google在6.0上對應用許可權進行了優化,需要單獨開啟,SYSTEM_ALERT_WINDOW,設定懸浮窗需要單獨開啟許可權:
參考網址:點選參考
新增以下程式碼:
private static final int REQUEST_CODE = 1;
private void requestAlertWindowPermission() {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
}
這些個程式碼都需要sdk版本是在23以上才能執行。
加了之後,完美執行,安裝的時候,會提示使用者是否開啟懸浮窗:
如下圖:
允許之後,點選按鈕,操作結果如下圖:
相關推薦
android彈出了一個全域性性質的對話方塊
今天學習android開發的時候,樓主看的是網上很火的《第一行程式碼----Android》,書中在介紹完廣播的時候,寫了一個案例,模擬QQ被迫下線的功能。 具體思路大概是,在使用者登入系統之後,在主介面點選一個按鈕傳送一個訊息,程式本身接收到這個訊息,彈出
Android高效率實現彈出帶動畫效果的對話方塊,仿照微信對話方塊效果
看到很多app頁面裡都有彈出對話方塊效果,今天使用PopupWindow實現帶動畫效果的對話方塊,先看效果圖: 效果圖: 分析實現思路: 彈出對話方塊帶有動畫效果 對話方塊從底部向上彈出 彈出對話方塊時,窗體背景呈現灰色(半透明) 對話方塊四周具
Android入門--彈出三個按鈕的對話方塊
在GUI程式中,有時需要彈出對話方塊來提示一些資訊。 這些對話方塊比一個獨立的螢幕簡單,在Android中彈出式對話方塊不同於表示一個螢幕的活動,它通常用於簡單的功能處理。 對話方塊的父類是android.app.Dialog,通過構建類android.app.AlertD
Servlet 中直接彈出"檔案另存為..."對話方塊
//當單擊頁面中的某按鈕呼叫此方法時,瀏覽器直接彈出“另存為...”對話方塊, Chorme則直接下載該檔案 // 而不用其它頁面做中轉 protected void doPost(HttpServletRequest request, HttpServletRespons
win7訪問xp的共享,彈出重輸入密碼的對話方塊(NTLM)
最近在研究 NTLM 的東東,無意發現一博文,實乃 NTLM 應用之例項, 故轉之,再次感謝原創者! --------------------------------------------------------------------------------------
js彈出可以選擇是否的對話方塊
<form name="form1" action="alert.htm"> <input type="button" name="button1" class="txt_2" value="刪除" onClick="javascript:check_rea
JS彈出可移動的DIV對話方塊透明遮罩效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://ww
點選自定義按鈕彈出百度商橋對話方塊
在頁面中已經成功安裝了百度商橋的情況下,想通過點選自定義的按鈕來彈出百度商橋的對話方塊,來達到及時溝通和不使頁面跳轉的目的。有以下解決方法: 1、首先需要把你的按鈕新增一個class,例如 加一個
Android 每次進入app彈出一個pupuwindow廣告對話方塊
在網上找了大半天,都沒有找到合適的例子,終於靠自己的努力,實現了這個功能 給大家分享一下效果圖: //這是一個方法,直接放在onCreat方法裡面就行了,我之前放的方法,沒有進行耗時操作,就一直報找不到pupuwindow的佈局,最後下了個子執行緒,然後popuwin
Android彈出圓角對話方塊
Android系統提供的對話方塊,預設是方的,很不美觀,一般我們都是自定義圓角對話方塊。下面看一下圓角對話方塊的簡單試用。 先上效果圖: 很簡單,就是activity上一個按鈕,點選按鈕彈出圓角對話方塊。 下面看程式碼: 最最重要的s
android 彈出對話方塊時顯示鍵盤
今天,簡單講講如何在彈出自定義的對話方塊時,彈出軟鍵盤。 之前,我講了如何製作自定義的對話方塊,現在,如果在彈出對話方塊時,自動彈出軟鍵盤,將游標直接聚焦到自定義對話方塊的輸入框內,那該怎麼做呢? 在網上搜索資料,找到了兩種程式碼,可以解決。 一.監聽對話方塊彈出事件
Android彈出對話方塊--Alertdialog(系統自帶的)
一. 我們在平時做開發的時候,免不了會用到各種各樣的對話方塊,相信有過其他平臺開發經驗的朋友都會知道,大部分的平臺都只提供了幾個最簡單的實現,如果我們想實現自己特定需求的對話方塊,大家可能首先會想到,通過繼承等方式,重寫我們自己的對話方塊。當然,這也是不失為一個不錯的解決方
Android 彈出全域性dialog
專案中需要在網路斷開連線時設定全域性彈出框提醒,要求當網路斷開的時候,在app內的任一頁面均能彈出提示框提示使用者網路斷開,開始認為dialog需要依附在Activity上,後經查詢可採取懸浮窗的模式,使其不必依附於Activity,可在任一頁面彈出,程式碼如下: A
android彈出對話方塊中帶有確定和取消對話方塊帶事件的應用
上次看了一個關於android中對話方塊的使用,其中對帶確定和取消的對話方塊講的並不詳細,自己補全了一下,當確定和取消按鈕中有事件時的情況,沒事件時用null就行了 new AlertDialog.Builder(this).setTitle("標題").setMessag
CS4:用戶在使用IE訪問FTP server 時遇到 502代理錯誤,沒有彈出輸入用戶憑據對話框
images tmg proc view site 彈出 request 劃線 mar 客戶問題概括:用戶在使用IE 訪問FTP server 時遇到 502代理錯誤。用戶在瀏覽器使用 ftp://ftpServerName 訪問自檢FTP server 時沒有提示輸入用戶
android 彈出底部dialog
1. 建立Dialog dialog=new Dialog(context, R.style.SelectTimeTheme); dialog.setContentView(R.layout.pop_select_time); Window window = dialog.getWind
Android 彈出框LemonBubble提示控制元件
簡介:這是一個完全Made in China的炫酷彈出指示層Android版本(-_-#意思就是還有iOS的),他能讓你快速的自定義任何樣式的彈出框 最新更新記錄: 捕捉了LemonBubble.forceHide()中的空指標異常,保證開發者在onDestroy
Android彈出視窗
protected void PopUp() { final PopupWindow popup = new PopupWindow(TestActivity.this); View popView = LayoutInflater.from(TestA
看不慣 TikTok 霸榜,Facebook 又抄出了一個“美版抖音”
誰才是真正的“美國版抖音”?這場競爭已經如火如荼地開始了。 在位元組跳動的短視訊產品 TikTok 霸榜美區 iTunes 一段時間後,Facebook 終於使出了慣例招式:抄襲。 這不,Facebook 在最近低調上線了一個名叫 Lasso(字面含義:套索)的短視訊產品。
在右側我們給出了一個已經基本完成的程式,讀入了一個字串,呼叫了一個叫str_len的函式來計算這個字串的長度,並輸出。 聰明的你應該已經發現了,這個叫str_len的函式並沒有完成
在右側我們給出了一個已經基本完成的程式,讀入了一個字串,呼叫了一個叫str_len的函式來計算這個字串的長度,並輸出。 聰明的你應該已經發現了,這個叫str_len的函式並沒有完成,在不修改函式原型的情況下,請完成str_len函式,實現我們上述的功能吧。 樣例輸入 複製 abc