android8 0適配工作

2021-09-11 21:36:29 字數 2638 閱讀 5350

整個8.0適配,設計的部分包括6部分(我專案中的,其他的適配感覺並不會影響專案的執行)

1)執行時許可權

2)通知notifaction適配

3)未知**apk安裝適配

4)後台執行限制(後台服務)

5)懸浮框適配

6)集合的處理 (abstractcollection使用限制)

android6.0的執行時許可權,當乙個許可權被允許後,該許可權同一組中的許可權也都會預設被允許,8.0修復了該bug。每乙個許可權都要去單一申請。

8.0安卓新增了 「通知渠道「 的概念,所有的通知必須增加通知渠道,否則會導致crash。適配起來也是非常的簡單,只要我們建立乙個渠道物件,然後將物件以引數的方式傳入即可。白話:建立 notification.builder 物件的傳參增加了渠道id。

8.0以下建立通知的方式:

8.0以上建立通知的方式分三步:

第一步:建立渠道物件

notificationchannel channel = new notificationchannel(「01」, 「訊息」, notificationmanager.importance_high);

channel.canbypassdnd();//是否繞過請勿打擾模式

channel.enablelights(true);//閃光燈

channel.setlockscreenvisibility(visibility_public);//鎖屏顯示通知

channel.setlightcolor(android.graphics.color.red);//閃關燈的燈光顏色

channel.canshowbadge();//桌面launcher的訊息角標

channel.getgroup();//獲取通知取到組

channel.setbypassdnd(true);//設定可繞過勿擾模式

channel.shouldshowlights();//是否會有燈光

第二步:新增渠道

mnotificationmanager = (notificationmanager) mgcontext.getsystemservice(context.notification_service);

mnotificationmanager.createnotificationchannel(channel);

第三步:建立通知

mbuilder = new notification.builder(mgcontext, 「01」); //此處的01很重要
完整的**如下:

private notificationutil() 

/*** 初始化notifacation 包括適配8.0增加channel

*/private void initnotification() else

}

8.0後安裝乙個未知的apk的時候,需求進行判斷,如果是未知**的需要申請許可權。

if (android.os.build.version.sdk_int >= android.os.build.version_codes.o)  else 

} else

。。。。

//安裝apk

private void installapk(activity context, @nullable string apkpath)

file file = new file(apkpath);

intent intent = new intent(intent.action_view);

if (build.version.sdk_int < build.version_codes.n) else

intent.addflags(intent.flag_activity_new_task);

context.startactivity(intent);

}

隱式廣播:應用無法使用清單註冊隱式廣播,但可以在執行的時候進行顯示廣播的註冊。

後台服務:當應用處於空閒時,幾分鐘後在後台啟動service,會導致crash。解決辦法是將後台服務該為前台服務。

**

* created by malei on 2019/1/22.

* 該類適配service8.0的啟動方式

*/public class baseservice extends service

if (android.os.build.version.sdk_int >= android.os.build.version_codes.o) else

}@override

public void oncreate()

//適配8.0service

private void adapter8()

}@nullable

@override

public ibinder onbind(intent intent)

}

這樣當我們需要使用service的時候,可以直接基礎該baseservice父類。

同時也可以,在大多數情況下,應用都可以使用jobscheduler克服這些限制。

Android 8 0通知欄推送及適配

首先我們判斷手機版本號,android版本大於8.0的時候呢,我們需要進行一下通道的操作才可 判斷版本號 接好 此處判斷安卓版本號是否大於或者等於android8.0 if build.version.sdk int build.version codes.o elseandroid8.0 適配 t...

Android 8 0後台執行限制

android o 對應用在後台執行時可以執行的操作施加了限制,稱為後台執行限制 background execution limits 這可以大大減少應用的記憶體使用和耗電量,提高使用者體驗。後台執行限制分為兩個部分 後台服務限制 background service limitations 廣播...

Android 8 0無法安裝apk

android 8.0系統比起以前的系統多了乙個安裝未知應用程式的許可權需求 如果我們要在8.0的系統上安裝apk,那麼我們必須獲得這個許可權.直接上 當前版本是否大於等於26 if build.version.sdk int build.version codes.o else override ...