AndroidQ-后臺(tái)APP啟動(dòng)限制

從后臺(tái)啟動(dòng)Activity的限制
Android 10 (API 級(jí)別 29) 及更高版本對后臺(tái)應(yīng)用可啟動(dòng) Activity進(jìn)行限制肢娘。Android10中, 當(dāng)App的Activity不在前臺(tái)時(shí)侮腹,其啟動(dòng)Activity會(huì)被系統(tǒng)攔截,導(dǎo)致無法啟動(dòng)掩驱。當(dāng)然罕扎,這么做的目的是為了用戶在使用其他APP過程中咨跌,不會(huì)被強(qiáng)制打斷。

例如辫继,典型的鬧鐘類APP怒见。預(yù)定鬧鐘本該啟動(dòng)一個(gè)Activity對用戶進(jìn)行提醒,結(jié)果Activity被攔截姑宽,無法執(zhí)行之后響鈴等操作遣耍,導(dǎo)致整個(gè)程序失去意義。

解決方案一:

官方給予的折中方案是使用全屏Intent(full-screen intent), 既創(chuàng)建通知欄通知時(shí), 加入full-screen intent 設(shè)置炮车。示例代碼如下(基于官方文檔修改):

Intent fullScreenIntent = new Intent(this, CallActivity.class);
PendingIntent fullScreenPendingIntent = PendingIntent.getActivity(this, 0,
        fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT);
 
NotificationCompat.Builder notificationBuilder =
        new NotificationCompat.Builder(this, CHANNEL_ID)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("Incoming call")
    .setContentText("(919) 555-1234")
    //以下為關(guān)鍵的3行
    .setPriority(NotificationCompat.PRIORITY_HIGH)
    .setCategory(NotificationCompat.CATEGORY_CALL)
    .setFullScreenIntent(fullScreenPendingIntent, true);
    
NotificationManager notifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifyManager.notify(notifyId, builder.build());

注意:在Target SDk為29及以上時(shí),需要在AndroidManifest上增加USE_FULL_SCREEN_INTENT申明

//AndroidManifest中
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />

解決方案二:

向用戶申請 SYSTEM_ALERT_WINDOW 權(quán)限,系統(tǒng)就不會(huì)攔截該程序后臺(tái)啟動(dòng)的Activity

示例代碼如下:

  • 在清單中申請權(quán)限
//AndroidManifest中
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  • 判斷是否擁有權(quán)限舵变,未授權(quán)則請求權(quán)限(>=Android6.0)
//檢查是否已經(jīng)授予權(quán)限
if (!Settings.canDrawOverlays(this)) {
    //若未授權(quán)則請求權(quán)限
    Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
    intent.setData(Uri.parse("package:" + getPackageName()));
    startActivityForResult(intent, 0);
} 

其中,Settings.canDrawOverlays(this)方法是在API level 23也就是Android M中新加入的用于檢查當(dāng)前是否擁有出現(xiàn)在“出現(xiàn)在其他應(yīng)用上”權(quán)限的方法瘦穆。在6.0以前的系統(tǒng)版本纪隙,懸浮窗權(quán)限是默認(rèn)開啟的,直接使用即可扛或。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绵咱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熙兔,更是在濱河造成了極大的恐慌悲伶,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件住涉,死亡現(xiàn)場離奇詭異麸锉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舆声,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門花沉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人媳握,你說我怎么就攤上這事碱屁。” “怎么了毙芜?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵忽媒,是天一觀的道長争拐。 經(jīng)常有香客問我腋粥,道長晦雨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任隘冲,我火速辦了婚禮闹瞧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘展辞。我一直安慰自己奥邮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布罗珍。 她就那樣靜靜地躺著洽腺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪覆旱。 梳的紋絲不亂的頭發(fā)上蘸朋,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音扣唱,去河邊找鬼藕坯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛噪沙,可吹牛的內(nèi)容都是我干的炼彪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼正歼,長吁一口氣:“原來是場噩夢啊……” “哼辐马!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起朋腋,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤齐疙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后旭咽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贞奋,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年穷绵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轿塔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仲墨,死狀恐怖勾缭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情目养,我是刑警寧澤俩由,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站癌蚁,受9級(jí)特大地震影響幻梯,放射性物質(zhì)發(fā)生泄漏兜畸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一碘梢、第九天 我趴在偏房一處隱蔽的房頂上張望咬摇。 院中可真熱鬧,春花似錦煞躬、人聲如沸肛鹏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽在扰。三九已至,卻和暖如春雷客,著一層夾襖步出監(jiān)牢的瞬間健田,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工佛纫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妓局,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓呈宇,卻偏偏與公主長得像好爬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子甥啄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容