操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    今日科技快訊

    昨日,3.15晚會上曝光了侵害消費者權益的事件:互動百科成最大虛假廣告“垃圾站”、鄭州科視魔爪伸進幾百所學校危害13萬孩子眼睛、江蘇遠方中匯等企業被曝飼料違規使藥物添加劑、永旺超市以及無印良品被曝光驚現日本核污染食品、耐克“最好的籃球鞋”氣墊消失只有實心橡膠底等。

    作者簡介

    本篇是釗林 的第二篇投稿,示例對比了清單權限與運行時權限,并給出了運行時權限的適配方案。希望能夠幫助到大家。

    釗林 的博客地址:

    正文

    摘要

    為什么系統禁用錄音權限后,在.0以上 版本手機運行崩潰?為什么清單文件聲明了錄音權限, 6.0以下 版本僅第一次提示權限授予窗口?為什么使用運行時權限請求,返回權限以授予?怎么讓應用程序在每次操作時識別系統是否禁用對應權限?如果你和我一樣存在很多很多的疑問,說明你還沒明白傳統的清單文件聲明權限和運行時權限請求之間的區別。

    對比傳統權限聲明和運行時權限請求的區別

    允許程序通過防火墻_允許ui管理應用程序_ipad允許應用訪問網絡

    傳統權限聲明針對 6.0 及其以下版本使用, 6.0對應的API版本23,聲明的方式直接將所有應用程序用到的權限統一在清單文件中定義,使用標簽,應用程序點擊安裝的過程,羅列清單文件聲明的所有權限,安裝完成后用戶可以選擇是否授予應用程序某個隱私的權限,系統提供:允許、提示和禁止三種選擇,下面看一組演示:

    圖 1

    圖 2

    圖 3

    圖 4

    ipad允許應用訪問網絡_允許ui管理應用程序_允許程序通過防火墻

    圖1演示傳統權限授予過程,在完成安裝的過程中可以選擇某個權限是否允許、提示和禁止狀態;

    圖2演示低版本應用程序在 6.0以上系統安裝過程,默認授予應用程序清單文件聲明的所有權限,小米手機測試無法修改權限狀態;

    圖3和圖4演示API版本23開發的應用程序分別安裝在低版本和高版本系統權限授予過程,安裝在低版本時授予權限過程和傳統的方式一樣,用戶可以修改權限的狀態;安裝到高版本時授予權限過程發生了很大變化,用戶安裝過程無法修改權限狀態,最后運行應用程序的錄音功能,出現閃退、崩潰現象。到這里,你是不是和我一樣,有一點點明白傳統權限聲明和運行時權限請求之間的區別嗎?

    深入理解運行時權限請求過程

    是不是我們可以大致認為:使用 API 23 及其以上版本開發的應用程序安裝在 6.0系統以下的手機,默認授予應用程序清單文件所有的權限,安裝在 6.0系統以上的手機默認禁止清單文件聲明的所有權限?應用程序獲取權限的過程中,調用開發庫提供的一些方法,某個方法返回 null 或屬性為 null,就可能導致使用部分功能時應用程序崩潰,而部分被禁止權限的功能雖然不會導致程序崩潰,但也無法獲取正確的數值。

    運行時權限的出現,一改傳統清單文件一鍵授權的不足,防止用戶安裝過程的慣性操作,獲取了用戶某些隱私權限,這些權限包括:收集位置信息,讀取短信內容,記錄用戶數據等,然后進行一些非法操作:發送短信訂閱資費套餐,扣取手機話費等,為了用戶隱私信息的安全,API 23開發的應用程序統一在運行時提醒用戶授予權限,僅授予針對當前功能使用到的權限,未使用到的權限默認禁止。

    那么如何兼容低版本的應用程序呢?以及如何讓高版本的應用程序也能在 6.0以下系統正常運行?那可能就像文章開頭演示的四種效果圖。

    運行時權限涉及的幾個過程:第一檢查權限是否被授予,使用方法();第二請求獲取權限,使用方法();第三用戶是否授予應用程序權限,監聽回調方法(),為了防止應用API 23開發的應用程序在 6.0以上系統正常安裝,在代碼中添加權限檢查,如下:

    允許ui管理應用程序_允許程序通過防火墻_ipad允許應用訪問網絡

    針對 圖4,運行時請求獲取錄音權限,然后點擊禁止后回調方法(),如下圖:

    應用程序請求授予權限后,如果用戶點擊禁止,以后每次權限檢查不再出現選擇提示窗口,()方法返回權限的狀態是.,防止反復彈出要求用戶授予權限彈窗,如果開發者仍然期待在用戶沒有禁止權限狀態后,再次提醒用戶授予權限,需要調用方法(),該方法的目的顯示系統UI說明提示用戶重新授予應用程序權限,Nexus 5測試運行效果,如下:

    查看()源碼說明,詳細了解該方法的使用:獲取是否你應該通過顯示UI說明請求授權的原因,只有當你沒有獲得該權限,同時當前上下文環境需要的權限沒有明確和用戶溝通——對于獲取該權限有什么用處,這時候你應該調用該方法。比如說,如果你寫了一個拍照功能的APP,請求了用戶可能需要的拍照權限,而沒有解釋為什么請求的權限是必須的,可能用戶沒覺得不正常;然而如果當前APP在拍照時請求獲取位置的權限,這時對于一個不精通技術的用戶來說可能想知道定位和拍照是怎樣的一種聯系。在這個情景之下,你大概會選擇通過一個顯示UI說明請求授權的原因:

    說明:在 6.0.1系統 的小米手機測試,在用戶禁止后,調用該方法沒有顯示說明;使用 內置的 Nexus 5模擬器 測試用戶第一次請求權限彈窗只有DENY和ALLOW選項,在用戶選擇DENY后再次調用方法,彈窗除了DENY和ALLOW選項外,還多了一個Never ask again復選框。

    允許ui管理應用程序_允許程序通過防火墻_ipad允許應用訪問網絡

    關于的說明

    在上面檢查授予權限的代碼中,我使用了().()這個方法檢查,考慮到兼容高低版本API的問題,還是推薦使用v4包下的.()這個靜態方法或者父類.();請求權限推薦使用.()這個靜態方法,如果第一次禁止后,重新彈窗顯示UI說明,調用靜態方法.()后重新授權,具體可以查看源碼理解它們之間的關系。

    在API 23的版本中,查看的源碼,上述的三個方法最終來自受保護的類,在源碼中檢查了應用程序的API版本。

    響應用戶授權狀態的回調方法()屬于內部的一個接口,如果沒有猜錯的話,僅在API 23以后的版本中,實現了.接口 的子類,才能回調()方法,同時也會看到 、 源碼實現了上述接口。

    運行時權限策略

    提出了運行時權限,在運行應用程序的時候,每使用應用程序的一個功能開發者就需要請求授權一次,那必然會加大了開發者的工作量,請求權限的代碼會變得很多,同時本來運行時權限的申請方式本來就比傳統權限請求方式復雜允許ui管理應用程序,如果再讓開發者一次次請求授權那肯定非常反感。為了解決權限反復多次請求的問題,采用了權限分組的策略:同一組的多個權限,只要獲得了用戶授予的一個權限允許ui管理應用程序,同時可以使用同組的其他權限,權限的分組情況如下圖:

    .-group.

    允許程序通過防火墻_允許ui管理應用程序_ipad允許應用訪問網絡

    .-group.

    .-group.

    .-group.

    .-group.

    .-group.PHONE

    .-group.

    .-group.SMS

    .-group.

    參考資料:

    #perm-

    更多

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有