最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年09月10日 11:39:19   作者:AndroidTraveler  
這篇文章主要給大家介紹了關于Android 8.0中一些坑以及對應的解決方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

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

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

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

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

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

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

喚不起系統(tǒng)安裝器

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

這個安裝界面的彈出就是依賴于系統(tǒng)的安裝器。

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

這個時候

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


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

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

其實解決方法非常簡單。

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

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

而且還不需要你在代碼動態(tài)申請,是不是 So easy。

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

通知問題

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

那怎么辦呢?

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

首先說下下面代碼出現(xiàn)的幾個變量:

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. 創(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

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

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

原因

出現(xiàn)這樣的問題,絕大多數(shù)都是因為我們?yōu)榱颂岣哂脩趔w驗,手動取消App啟動白屏或者黑屏的時候,將Splash界面設為了透明,然后這個時候又設置了方向為垂直,從而導致了這個問題。

解決

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

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

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

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

總結(jié)

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

相關文章

  • Android應用禁止屏幕休眠的3種方法

    Android應用禁止屏幕休眠的3種方法

    這篇文章主要為大家詳細介紹了Android應用禁止屏幕休眠的3種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android開源堆疊滑動控件仿探探效果

    Android開源堆疊滑動控件仿探探效果

    這篇文章主要為大家詳細介紹了Android開源堆疊滑動控件仿探探效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android?TextView的maxEms和maxLength屬性區(qū)別

    Android?TextView的maxEms和maxLength屬性區(qū)別

    這篇文章主要為大家介紹了Android?TextView的maxEms和maxLength屬性區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 使用反射機制控制Toast的顯示時間

    使用反射機制控制Toast的顯示時間

    這篇文章主要為大家詳細介紹了使用反射機制控制Toast的顯示時間,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 基于Android實現(xiàn)數(shù)獨游戲

    基于Android實現(xiàn)數(shù)獨游戲

    這篇文章主要為大家詳細介紹了基于Android實現(xiàn)數(shù)獨游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android Service自啟動注意事項分析

    Android Service自啟動注意事項分析

    這篇文章主要介紹了Android Service自啟動注意事項,結(jié)合實例分析了Android Service自啟動過程中屬性設置的相關技巧,需要的朋友可以參考下
    2016-03-03
  • Android DrawableTextView圖片文字居中顯示實例

    Android DrawableTextView圖片文字居中顯示實例

    在我們開發(fā)中,TextView設置Android:drawableLeft一定使用的非常多,但Drawable和Text同時居中顯示可能不好控制,小編想到通過自定義TextView實現(xiàn),具體詳情大家參考下本文
    2017-03-03
  • Android中實現(xiàn)根據(jù)資源名獲取資源ID

    Android中實現(xiàn)根據(jù)資源名獲取資源ID

    這篇文章主要介紹了Android中實現(xiàn)根據(jù)資源名獲取資源ID,本文講解了使用文件名獲取資源ID的方法,需要的朋友可以參考下
    2015-01-01
  • Kotlin中Suppress的非常規(guī)用法示例

    Kotlin中Suppress的非常規(guī)用法示例

    這篇文章主要給大家介紹了關于Kotlin中Suppress的非常規(guī)用法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Android快速實現(xiàn)觸摸移動的懸浮窗

    Android快速實現(xiàn)觸摸移動的懸浮窗

    這篇文章主要為大家詳細介紹了Android快速實現(xiàn)觸摸移動的懸浮窗,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

涟水县| 河津市| 西丰县| 临颍县| 景德镇市| 岫岩| 胶南市| 什邡市| 乌鲁木齐县| 农安县| 濉溪县| 鹿邑县| 茌平县| 九龙城区| 龙井市| 涪陵区| 五家渠市| 唐河县| 虞城县| 桐庐县| 五大连池市| 马边| 拉萨市| 安吉县| 湘潭县| 颍上县| 河北省| 大城县| 得荣县| 芜湖市| 高台县| 仲巴县| 莱西市| 民勤县| 望江县| 珠海市| 漳州市| 玉屏| 米易县| 旅游| 苍山县|