【黑馬程序員】鴻蒙Next星河版項目實戰-守護助手APP應用開發-Day2-05-權限管理基礎-動態向用戶申請授權

黑马程序员
28 位粉絲
9 觀看·2024年9月23日
本課程100% 鴻蒙NEXT星河版原生應用開發,API 12 版本 SDK。基本覆蓋主流APP的能力集,將來遷移項目都可以看這個項目,權限、位置、地圖、錄音、相冊、播放器、傳感器、通訊錄、數據庫等應有盡有。
在剛剛的時候我們先講解了如何校驗這個權限有還是沒有
這是流程的第二步
那麼接下來的第三步其實是我們這裏面非常非常重要的一步
就是真的要向用戶去申請這個權限了
申請權限的時候需要調用一個核心的API
這個API叫做request permissions from user
直譯過來就是向用戶申請權限
這個直譯就是這麼一個意思
那我們可以在裏面傳入一些參數
比如說傳入日曆的權限
然後傳入位置
傳入相機等
對不對
用戶可以在那個彈窗裏面選擇允許或者說叫做拒絕
那麼用的時候
他也提供了兩種參考方案
一種是在UI Ability裏面
UI Ability其實就是當我們應用一起動的時候就直接蹦出來
這個說實話體驗不太好
一般我們都是什麼
是不是在使用到的時候再申請
不然的話
用戶上來先給點一大堆的勾
是不是會有點慌了
可能就直接不用你這個應用了
好
所以我們更加推薦
就是在UI用的時候
再去進行一個申請
OK
那我們接下來呢
這裏呢
也非常之多的一些代碼吧
其實核心的呢
也是隻要幾行
那麼在這裏呢
大家也先不用急着看這個啊
就是你可以後面再去看
那我們重點呢
哎就是學習那個必要的API啊
就是這個request permission from user
那麼他缺什麼參數
我們是不是在補全什麼參數就好了呀
對吧
注意啊
雖然我們每次寫的代碼的可能都會有很多
但是我基本上都會告訴大家
這裏面最重要的業務
那個代碼行是誰
像這裏其實就是這行
而這一行前面的
是不是都你可以理解爲準備工作呀
對不對啊
就他的一些固定流程啊
好
那我們接下來呢
哎再去給他說一下啊
這個剛剛的第二個叫啥來的
叫做動態相用申請授權啊
核心的一行是核心的API是他啊
但是要調用他呢
哎要的要什麼準備工作呢
哎那我們繼續看一下啊
核心API
就他
向你介紹啊
向你面試的時候呢
其實你也應該要挑一些重點
而不是要說哎前面每一行
你的必須要背下來
你要記住核心的那一個就好了啊
好
那我們這裏的核心API呢
是這個request permission from user
那這個API呢
其實是由誰去管理的呢
啊還是有這個訪問控制管理器這裏啊
那當然這部分代碼呢
其實啊在官方文檔裏面有啊
那我直接就告訴大家
他是屬於誰的啊
就屬於這個at manager
at manager裏面呢
我們可以調用一下這個叫做
request permission from user
ok 那就調用他
那麼接下來呢
知道了核心的API
那我們就注意他的參數就好了
那他的參數裏面我們看第一個
第一個叫做contact
啊contact
哎那這個簡單是不是直接就
哎對了get contact
是不是就好了呀
對吧get contact
好
那第一個餐準備好了
第二餐呢
哎這裏的類型跟前面稍微有一些不一樣
這一個餐呢
他其實是不是要求傳的是一種
哎對了宿主格式
因爲我們的這個像很多的權限啊
他其實是分爲了讀和寫兩個
他是要編組在一塊的啊
好那所以呢
在這裏啊
他其實
主要考慮的是一些權限的編組啊
那所以呢
他這一邊參數要求
傳有一個數據的格式
那API是人家封掉好的
那我們就按他的要求去傳參
是不是就好了呀
對吧
那接下來呢
我們就寫一下
呃那我們雖然是申請一個
但是格式呢
還是要寫成數據的方式
那我剛剛書寫的時候呢
是不是大家也看到
我其實是不是隻寫那些核心部分
比如說日曆就是karen的
對吧
那我就快速在這裏找一個ok
好跟前面對應上就好了啊
好就比如說re-karen的
好那我們現在呢
就給他寫完了啊
寫完了
好那寫完了這一個之後呢
現在講一個語句
是不是整一個API
是不是他至少不會報錯了呀
啊不會報錯了
那我們接下來呢
哎再看一下啊
鼠標懸鈴上去看
哎這一個呢
他會有那個
訪問值
不過訪問值呢
好像是被promise包起來了
而且這個東西是不是好像也沒有
那個帶sync的寫法呀
對吧
那就只能是通過promise的方式
或者說回答函數的方式去拿了啊
好那我這裏呢
用一個叫做promise
對sync await去把promise的值
給他拿出來提取出來
好的
那最終呢
這一邊哎
我們提取出來的is呢
其實啊
就是一個permission request result
對吧
就是一個授權的結果
或者說我簡化一下吧
這個單詞還是太長了
就是個result
對吧
就是個result
好
其實就是大家平常的is是吧
就is
好的
那我們接下來呢
在這裏給他來一個彈窗吧
來一個彈窗
好核心代碼
其實就是這樣
動態向用戶申請授權
好的
接下來我們刷新看一下啊
好
回來到模擬器裏面
我們試一下
現在呢
我們第一次點擊這個按鈕
哎
大家現在發現是不是他會蹦出來一個彈窗
看到了嗎
對不對
就要像我們前面寫的時候
那個什麼reason
reason哎
在這裏什麼用於啊
添加日程呢
什麼的
他是不是也會蹦出來
顯示在這個位置啊
對吧
就是彈窗申請時候的那個reason
他最終就會在我們申請授權的時候
展示到這個界面中啊
ok
那這一邊的配置的國際國際化嗎
是吧
如果是啊
這個系統是這個英文的
那他應該顯示的就是英文的那一句提醒了
ok
那這裏啊不注意這個彈窗呢
其實啊
在我們應用
其實只會出現
意思
不管你點了允許還是點了拒絕
他接下來再點
他都不會出現
比方說我點了允許
ok
點了允許之後啊
剛剛是這裏
我把他的結果是好像進行了個接受並彈出來啊
對吧
這一邊呢
他會有一個os 的結果吧
這個零其實就是允許了啊
好
那我接下來我再點再點
大家發現那個日曆申請的彈窗是不是就不會再談了
是不是隻給你結果了
對吧
只告訴結果
好
那這個是需要大家注意的啊
好
那檢測呢
也能檢測出來
哎
原本好像是負一
現在是變成零了呀
對吧
好
那這個如果說我還是想在練習的時候
哎
再去看一下那個彈窗
啊
那怎麼辦呢
你你只能是這樣子
對
你把應用給他卸載掉
因爲應用授權過之後啊
不管你允許還是拒絕
他以後再也不會
談了啊
這個跟我們平常的應用其實是
一樣的啊
一樣的就是這個界面啊
他其實就只會出現一次啊
所以我們後期呢
在用戶點了拒絕的時候
是不是還得想辦法引導他去開回來啊
對吧
不過這個是後面的事情啊
但是我得先告訴一下大家這個東西就只談一次而已啊
就只談一次而已
好的
那現在呢
呃
關於這個怎麼動態申請授權啊
那我們繼續給大家理一下
動態申請授權的核心代碼
大家最終發現是不是也就只有一行代碼呀
對吧
前面呢
稍微做一些準備工作
先要訪問
先要準備到這個對象
我們才能調用這個對象裏面的API
那麼參數呢
按照他的這個API的要求
第一個傳入contact
第二個呢
哎
就是一個宿主格式的那個授權啊
列表啊
授權列表
好
我們就寫單
我們寫一個就好了啊
那最終呢
結果你可以去談一下啊
對不對啊
然後呢
也在這個模擬器裏面試一下
他會被彈穿
如果不行
那你把應用給他卸轉掉
哎
重新他應該就要有了啊
好
那麼接下來呢
也給他一點時間
試着把這個動態申請授權
這個業務給他處理一下吧
