麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

Android 8.0中一些坑以及對應的解決方法

2019-12-12 00:32:05
字體:
來源:轉載
供稿:網友

前言

雖然 Android 9.0 都已經面世了,本篇文章寫的有點遲了。

但是遲到好過不到,因此基于此這邊還是記錄一下項目中遇到的 Android 8.0 的坑及對應解決方法。

每次系統升級,雖然系統功能更加強大了,各方面性能也提高了。

但是對于開發者而言,一個困擾的問題也是隨之而來――兼容。

尤其對于一些已經上市的 App 而言,在新系統發布之前就要了解到底有哪些改動,以避免用戶升級新系統后導致 App 沒法正常運行。

好了,回歸主題,說說 Android 8.0 里面的幾個坑吧。

喚不起系統安裝器

如果你的 App 提供了更新功能,用戶點擊更新,你下載完 Apk 之后會自動彈出安裝界面。

這個安裝界面的彈出就是依賴于系統的安裝器。

假設你在 Android 8.0 以下的手機操作正常,但是在 8.0 的手機上,你會發現,下載完之后完全沒反應。

這個時候

假設你以為說彈個提示讓用戶自己安裝,我想說


用戶才不會理你。用戶分分鐘就不更新了。

所以說我們要解決這個問題。讓這個安裝器在 Android 8.0 的手機也能正常喚起。

其實解決方法非常簡單。

只需要在 AndroidManifest.xml 中聲明以下權限即可。

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

而且還不需要你在代碼動態申請,是不是 So easy。

一行代碼解決這個兼容性問題。

通知問題

假設你的 App 需要在任務欄顯示通知。如果你是按照 Android 8.0 之前的寫法的話。那么在 8.0 的手機上面你是顯示不了的。

那怎么辦呢?

關于通知的基本寫法這邊就不再贅余,如果不清楚的小伙伴自行查閱資料。這邊重點說下解決方法。

首先說下下面代碼出現的幾個變量:

private static NotificationManager manager;public static final String NOTIFICATION_CHANNEL = "your app pkg name";private static final String NOTIFICATION_CHANNEL_NAME = "App Channel";

第一個寫過通知的都知道,一個管理類。

第二個是通知的一個 CHANNEL,這個也是 8.0 之后才引入的。取值 App 包名即可。

第三個自定義,只要保證唯一即可。

兼容有兩步需要操作。

1. 創建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

昨天屁顛屁顛把項目適配到8.0,本來覺得美滋滋,結果app一啟動直接crash,搞得我一臉懵逼。。。不能忍啊,趕緊去看一下日志,于是就看到了如下圖

有一句是這樣的Only fullscreen opaque activities can request orientation,也就是說只有全屏不透明的activity才可以設置方向,既然知道問題所在就好辦了。

原因

出現這樣的問題,絕大多數都是因為我們為了提高用戶體驗,手動取消App啟動白屏或者黑屏的時候,將Splash界面設為了透明,然后這個時候又設置了方向為垂直,從而導致了這個問題。

解決

重點來了,解決辦法其實很簡單

1.找到你設置透明的Activity,然后在他的theme中將android:windowIsTranslucent改為false
eg:<item name="android:windowIsTranslucent">false</item>

2.再加入<item name="android:windowDisablePreview">true</item>就搞定了。

更多內容可以看官方示例:https://github.com/googlesamples/android-NotificationChannels/

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级免费特黄视频 | 第一区免费在线观看 | 成人9禁啪啪无遮挡免费 | 色诱亚洲精品久久久久久 | 中国av免费在线观看 | 国产精品美女久久久免费 | 久操福利视频 | 最新中文在线视频 | 在线看一区二区三区 | 女人久久久www免费人成看片 | 羞羞视频在线免费 | 国产午夜免费 | 久久精品亚洲欧美日韩精品中文字幕 | 久色精品 | av在线高清观看 | 日日草夜夜 | 免费在线观看一级片 | 欧美特黄a | 国产精品午夜未成人免费观看 | 久国久产久精永久网页 | 91久久久久久久久久久久久 | 一级做a爱片毛片免费 | 免费高潮在线国 | 久久69精品久久久久久国产越南 | 九九爱视频 | 欧美在线成人影院 | 国产午夜精品一区二区三区免费 | 成人一级黄色大片 | 玖草| 日日爱99| 国产精品免费视频观看 | 亚州综合图片 | 全黄裸片武则天一级第4季 九色p | 国产精品成人久久 | 免费久久精品 | 久久国产成人精品国产成人亚洲 | 亚洲无av | 日韩视频中文 | 色阁五月 | 狠狠干视频网站 | 欧洲精品久久久久69精品 |