這篇文章主要為大家展示了“Android 8.0中有哪些常見問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Android 8.0中有哪些常見問題”這篇文章吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、襄陽網(wǎng)站維護(hù)、網(wǎng)站推廣。前言
雖然 Android 9.0 都已經(jīng)面世了,本篇文章寫的有點(diǎn)遲了。
但是遲到好過不到,因此基于此這邊還是記錄一下項(xiàng)目中遇到的 Android 8.0 的坑及對(duì)應(yīng)解決方法。
每次系統(tǒng)升級(jí),雖然系統(tǒng)功能更加強(qiáng)大了,各方面性能也提高了。
但是對(duì)于開發(fā)者而言,一個(gè)困擾的問題也是隨之而來——兼容。
尤其對(duì)于一些已經(jīng)上市的 App 而言,在新系統(tǒng)發(fā)布之前就要了解到底有哪些改動(dòng),以避免用戶升級(jí)新系統(tǒng)后導(dǎo)致 App 沒法正常運(yùn)行。
好了,回歸主題,說說 Android 8.0 里面的幾個(gè)坑吧。
喚不起系統(tǒng)安裝器
如果你的 App 提供了更新功能,用戶點(diǎn)擊更新,你下載完 Apk 之后會(huì)自動(dòng)彈出安裝界面。
這個(gè)安裝界面的彈出就是依賴于系統(tǒng)的安裝器。
假設(shè)你在 Android 8.0 以下的手機(jī)操作正常,但是在 8.0 的手機(jī)上,你會(huì)發(fā)現(xiàn),下載完之后完全沒反應(yīng)。
這個(gè)時(shí)候思考一下了。
假設(shè)你以為說彈個(gè)提示讓用戶自己安裝,我想說
用戶才不會(huì)理你。用戶分分鐘就不更新了。
所以說我們要解決這個(gè)問題。讓這個(gè)安裝器在 Android 8.0 的手機(jī)也能正常喚起。
其實(shí)解決方法非常簡單。
只需要在 AndroidManifest.xml 中聲明以下權(quán)限即可。
而且還不需要你在代碼動(dòng)態(tài)申請(qǐng),是不是 So easy。
一行代碼解決這個(gè)兼容性問題。
通知問題
假設(shè)你的 App 需要在任務(wù)欄顯示通知。如果你是按照 Android 8.0 之前的寫法的話。那么在 8.0 的手機(jī)上面你是顯示不了的。
那怎么辦呢?
關(guān)于通知的基本寫法這邊就不再贅余,如果不清楚的小伙伴自行查閱資料。這邊重點(diǎn)說下解決方法。
首先說下下面代碼出現(xiàn)的幾個(gè)變量:
private static NotificationManager manager; public static final String NOTIFICATION_CHANNEL = "your app pkg name"; private static final String NOTIFICATION_CHANNEL_NAME = "App Channel";
第一個(gè)寫過通知的都知道,一個(gè)管理類。
第二個(gè)是通知的一個(gè) CHANNEL,這個(gè)也是 8.0 之后才引入的。取值 App 包名即可。
第三個(gè)自定義,只要保證唯一即可。
兼容有兩步需要操作。
1. 創(chuàng)建Channel
private static void createChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel notifyChannel = new NotificationChannel(NOTIFICATION_CHANNEL, NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT); notifyChannel.setLightColor(Color.GREEN); notifyChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); manager.createNotificationChannel(notifyChannel); } }
2. 獲取 Notification.Builder
private Notification.Builder getNotificationBuilder(Context sourceContext) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { return new Notification.Builder(sourceContext, NOTIFICATION_CHANNEL); } else { return new Notification.Builder(sourceContext); } }
可以看到,上面的操作都以 8.0 作為分界處理。
做完這兩步,之前不能顯示通知的 App 就可以顯示了。
Only fullscreen opaque activities can request orientation
昨天屁顛屁顛把項(xiàng)目適配到8.0,本來覺得美滋滋,結(jié)果app一啟動(dòng)直接crash,搞得我一臉懵逼。。。不能忍啊,趕緊去看一下日志,于是就看到了如下圖
有一句是這樣的Only fullscreen opaque activities can request orientation,也就是說只有全屏不透明的activity才可以設(shè)置方向,既然知道問題所在就好辦了。
原因
出現(xiàn)這樣的問題,絕大多數(shù)都是因?yàn)槲覀優(yōu)榱颂岣哂脩趔w驗(yàn),手動(dòng)取消App啟動(dòng)白屏或者黑屏的時(shí)候,將Splash界面設(shè)為了透明,然后這個(gè)時(shí)候又設(shè)置了方向?yàn)榇怪?,從而?dǎo)致了這個(gè)問題。
解決
重點(diǎn)來了,解決辦法其實(shí)很簡單
1.找到你設(shè)置透明的Activity,然后在他的theme中將android:windowIsTranslucent
改為false
eg:
2.再加入
就搞定了。
以上是“Android 8.0中有哪些常見問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!