日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android可以有一个悬浮窗口在进入屏保状态显示,点击进入应用,Android如何实现锁屏状态下弹窗...

發(fā)布時間:2025/3/11 Android 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android可以有一个悬浮窗口在进入屏保状态显示,点击进入应用,Android如何实现锁屏状态下弹窗... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

想在鎖屏上面實現(xiàn)彈窗,第一個想法就是利用 WindowManager設(shè)置 Window的 Flag,通過設(shè)置 Flag的顯示優(yōu)先級來讓窗口顯示在鎖屏的上面。

接下來就是試驗可能相關(guān)的 Window Type屬性,驗證該方案是否可行。

在嘗試各個 Window Type 屬性之前需要明確各個 Type 所需要的權(quán)限,下面是 com.android.internal.policy.impl.PhoneWindowManager.checkAddPermission 的源碼:

public int checkAddPermission(WindowManager.LayoutParams attrs) {

int type = attrs.type;

if (type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW

|| type > WindowManager.LayoutParams.LAST_SYSTEM_WINDOW) {

return WindowManagerImpl.ADD_OKAY;

}

String permission = null;

switch (type) {

case TYPE_TOAST:

// XXX right now the app process has complete control over

// this... should introduce a token to let the system

// monitor/control what they are doing.

break;

case TYPE_INPUT_METHOD:

case TYPE_WALLPAPER:

// The window manager will check these.

break;

case TYPE_PHONE:

case TYPE_PRIORITY_PHONE:

case TYPE_SYSTEM_ALERT:

case TYPE_SYSTEM_ERROR:

case TYPE_SYSTEM_OVERLAY:

permission = android.Manifest.permission.SYSTEM_ALERT_WINDOW;

break;

default:

permission = android.Manifest.permission.INTERNAL_SYSTEM_WINDOW;

}

if (permission != null) {

if (mContext.checkCallingOrSelfPermission(permission)

!= PackageManager.PERMISSION_GRANTED) {

return WindowManagerImpl.ADD_PERMISSION_DENIED;

}

}

return WindowManagerImpl.ADD_OKAY;

}

明顯不適合的 Type:TYPE_TOAST, TYPE_INPUT_METHOD, TYPE_WALLPAPER; 可能適合的 Type:TYPE_PHONE, TYPE_PRIORITY_PHONE, TYPE_SYSTEM_ALERT, TYPE_SYSTEM_ERROR, TYPE_SYSTEM_OVERLAY; 其它類型的 Type:

需要系統(tǒng)簽名權(quán)限:

android.Manifest.permission.INTERNAL_SYSTEM_WINDOW

而申請該權(quán)限需要系統(tǒng)簽名,所以我們是無法獲取權(quán)限的。

TYPE_PHONE

/**

* Window type: phone. These are non-application windows providing

* user interaction with the phone (in particular incoming calls).

* These windows are normally placed above all applications, but behind

* the status bar.

* In multiuser systems shows on all users' windows.

*/

public static final int TYPE_PHONE = FIRST_SYSTEM_WINDOW+2;

TYPE_PHONE 類型的窗口可以顯示在其它 APP 的上面,但不能顯示在鎖屏的上面,所以 PASS。

TYPE_PRIORITY_PHONE

/**

* Window type: priority phone UI, which needs to be displayed even if

* the keyguard is active. These windows must not take input

* focus, or they will interfere with the keyguard.

* In multiuser systems shows on all users' windows.

*/

public static final int TYPE_PRIORITY_PHONE = FIRST_SYSTEM_WINDOW+7;

TYPE_PRIORITY_PHONE 類型的窗口可以顯示在其它 APP 的上面,但不能顯示在鎖屏的上面,所以 PASS。而且實際的行為和注釋并不相符,該類型的窗口是可以獲取交互事件的,具體原因待查。

TYPE_SYSTEM_ALERT

/**

* Window type: system window, such as low power alert. These windows

* are always on top of application windows.

* In multiuser systems shows only on the owning user's window.

*/

public static final int TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW+3;

TYPE_SYSTEM_ALERT類型的窗口可以顯示在其它 APP 的上面,但不能顯示在鎖屏的上面,所以 PASS。

TYPE_SYSTEM_OVERLAY

/**

* Window type: system overlay windows, which need to be displayed

* on top of everything else. These windows must not take input

* focus, or they will interfere with the keyguard.

* In multiuser systems shows only on the owning user's window.

*/

public static final int TYPE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+6;

TYPE_SYSTEM_OVERLAY 類型的窗口可以顯示在所有其它窗口的上面,包括鎖屏,而且不會影響它下面窗口的交互事件響應(yīng),但是該屬性窗口不能獲得焦點,無法進(jìn)行交互(如果該窗口可以獲取焦點,那么就可以用來抓取用戶的鎖屏密碼,出于安全考慮,系統(tǒng)是不會允許的),所以只能用來簡單的展示內(nèi)容,如果需要交互的鎖屏彈窗,那么該屬性 PASS。

TYPE_SYSTEM_ERROR

/**

* Window type: internal system error windows, appear on top of

* everything they can.

* In multiuser systems shows only on the owning user's window.

*/

public static final int TYPE_SYSTEM_ERROR = FIRST_SYSTEM_WINDOW+10;

在原生 ROM 5.1 下試驗是可以顯示出來的,但根據(jù)注釋來看(appear on top of everything they can)不是在所有情況下都可以顯示在鎖屏上面的,而且像 MIUI 和 Flyme 等 ROM 默認(rèn)是屏蔽浮窗權(quán)限的,考慮到這點,利用 WindowManager添加浮窗的方式實現(xiàn)鎖屏彈窗的方案基本 PASS。

使用 Activity 的方式實現(xiàn)

首先需要對 Activity 進(jìn)行如下設(shè)置

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final Window win = getWindow();

win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

}

其中最主要也是必須要設(shè)置的就是:FLAG_SHOW_WHEN_LOCKED,顧名思義就是鎖屏下顯示該 Activity。而其它幾個 Flag包括:解鎖、保持屏幕常亮、點亮屏幕可以根據(jù)具體的需求選擇設(shè)置。

在 AndroidManifest.xml 中聲明 Activity

同樣該 Activity也需要在 AndroidManifest.xml中聲明,聲明時需注意添加 android:excludeFromRecents="true" 屬性,是為了將該 Activity從最近任務(wù)列表中去除,否則用戶會覺得很奇怪。還有因為這個 Activity會整個蓋在鎖屏上面,而且就算設(shè)置成背景透明,鎖屏界面也不會顯示在下面(系統(tǒng)主要是出于安全考慮),所以需要考慮下該 Activity的背景,這里為了顯示不要太突兀將主題設(shè)為壁紙。

android:launchMode="singleInstance"

android:excludeFromRecents="true"

android:theme="@android:style/Theme.Wallpaper.NoTitleBar"/>

啟動 Activity

由于該 Activity是為了在鎖屏的情況下顯示的,所以啟動 Activity時不要忘了判斷手機是否處于鎖屏狀態(tài),可以通過下面這種方式判斷鎖屏狀態(tài):

KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);

if (km.inKeyguardRestrictedInputMode()) {

// 處于鎖屏狀態(tài)

}

總結(jié)

以上就是在Android中實現(xiàn)鎖屏狀態(tài)下彈窗效果的全部內(nèi)容,希望本文的內(nèi)容對大家開發(fā)Android的時候能有所幫助,如果有疑問歡迎大家留言討論。

總結(jié)

以上是生活随笔為你收集整理的android可以有一个悬浮窗口在进入屏保状态显示,点击进入应用,Android如何实现锁屏状态下弹窗...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人午夜sm精品久久久久久久 | 中文永久免费观看 | 精品盗摄一区二区三区 | 日韩一区二区三区精品视频 | 免费的性爱视频 | 污污网站在线观看 | 国产精品视频一区二区三 | 四虎影视免费在线观看 | 久久久无码一区二区三区 | 日本网站在线看 | 九九热这里有精品 | 爆操巨乳美女 | 日韩av中文在线 | 色一情一乱一伦一区二区三区 | 久久久久久久九九九九 | 亚洲综合av一区 | 免费网站在线观看视频 | 97国产成人| 亚洲国产视频一区二区 | 夜夜摸夜夜爽 | 久久久久美女 | 亚洲日本香蕉视频 | 精品久久视频 | 欧美在线小视频 | 成人小视频免费在线观看 | 成年人在线观看网站 | jlzzjlzzjlzz亚洲人 | 日韩视频免费在线播放 | 国产又色又爽又黄 | 亚色视频在线观看 | 青青草视频播放 | h无码动漫在线观看 | 久免费一级suv好看的国产 | 国产性猛交╳xxx乱大交 | 欧美黄色一区 | 欧美做受喷浆在线观看 | 国产农村妇女精品一区 | 国产黄色片视频 | 亚洲乱色熟女一区二区 | 手机看片1024在线 | 国产xxxxxxxxx | 成年人免费视频播放 | 欧美日韩在线一区二区 | 成年人看的免费视频 | 一级在线播放 | 色在线视频 | 亚洲一区二区高清视频 | 婷婷五月综合缴情在线视频 | 欧美成人hd | 国产成人一区二区 | 琪琪秋霞午夜被窝电影网 | 日日嗨av一区二区三区四区 | 国产ts在线视频 | 亚洲天堂激情 | 日韩一级片免费观看 | 国产精九九网站漫画 | 午夜激情av | 欧美精品亚洲一区 | 视频精品一区二区 | 99欧美精品 | 强行侵犯视频在线观看 | 国产在线视频在线观看 | 超碰美女在线 | 国产精品久久久久毛片大屁完整版 | 欧美高清hd | 欧美在线三区 | 香蕉av在线 | 福利电影一区二区 | 免费毛片小视频 | 男女插鸡视频 | 日韩av资源在线观看 | 玩偶游戏在线观看免费 | 一区二区三区欧美 | 好吊妞操| 蜜桃av久久久亚洲精品 | 国产色视频 | 黄色永久免费网站 | 久草国产视频 | 国产精品嫩草影院av蜜臀 | 第五色婷婷 | 亚洲一区二区三区四区五区六区 | 岛国av在线播放 | 麻豆一区二区在线观看 | 免费毛片在线播放免费 | 久久综合精品国产二区无码不卡 | 中文字幕在线观看三区 | 僵尸叔叔在线观看国语高清免费观看 | 十八禁视频网站在线观看 | 日韩男人的天堂 | 99国内揄拍国内精品人妻免费 | 99精品视频99 | 日本黄在线观看 | 日产av在线| 婷婷综合网站 | 亚洲精品一区二区在线 | 日本一区视频在线 | 欧美日韩在线免费观看 | 欧美一级在线视频 | 抽插丰满内射高潮视频 |