在前一篇 "Avalonia.MAUI Hybrid 之使用 .NET MAUI Essentials 實作篇 - I" 所完成的基礎下,在此篇就能繼續加入相關的 .NET MAUI Essentials 的使用。
不過,還是要提醒一下,如果未完成 Visual Studio 所提供的 .NET MAUI 開發,並完成 Android 、 iOS 環境所需的建置。
那將無法完成本篇所講的部分測試結果。
先觀察一下,整個方案的執行專案預設是設定在 Avalonia 的共用專案上:
如果要測試執行 Android 的環境,要把啟動專案切到 xxxxxx.Android 的專案上:
如果你的 Android 相關環境沒有設定好,就不會看到如上圖 "箭頭" 所指的 "Android 模擬器" (該模擬器的名稱可能會是建立時自取的,不需要跟畫面的相同)。
而如果透過 Visual Studio 偵錯執行此 Avalonia 專案到 Android 上,則會看到類似下圖的結果:
確定從上一篇到目前修改的結果可以正確執行時,就可以來編輯畫面與操作的一些事情。
回到 Avalonia 的共用專案,打開在 ViewModels 底下的 MainViewModel.cs 並來設計一個 RelayCommand:
[RelayCommand]
private async Task ButtonClick()
{
Console.WriteLine(Greeting);
var location = await Geolocation.GetLocationAsync();
Console.WriteLine($"GeoLoncation Info: {location}");
}
上述程式碼就是 .NET MAUI Essentials 所提供的 Geolocation 類別 的使用。
接著就可以打開 Views 底下的 MainView.axaml 進行畫面上的編輯,進行一個 Button 與其點選的 Command Binding 設計:
<StackPanel>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Greeting}" /> <!--這是原本就有的 TextBlock-->
<Button HorizontalAlignment="Center" VerticalAlignment="Center"
Command="{Binding ButtonClickCommand}" Content="Click me!" />
</StackPanel>
以上完成後,也能很順利的在 Android 模擬器當中執行。
但不出意外馬上就要出意外了~~~
當按下 Button 時就會馬上拋出 PermissionException 唷!
其理由在 "Avalonia.MAUI Hybrid 之使用 .NET MAUI Essentials 介紹篇" 也有略提過,因為相關的 App 對手機的硬體操作行為在 Android 手機上是需要權限請求的。
所以打開 xxxxxxx.Android 專案位在 Properties 底下的 AndroidManifest.xml 檔,直接勾選 "ACCESS_COARES_LOCATION" 與 "ACCESS_FINE_LOCATION" 這兩個權限請求的設定。
再次把程式偵錯執行到 Android 模擬器當中,同樣點選按鈕後,會看到類似以下的系統 Dialog,請點選 "Allow (允許)"。
(只有第一次執行會如此,除非有去系統的 Settings 把此 App 取得的權限作異動調整)
然後,理論上 Button 點選的會卡住,在這邊就直接專案偵錯執行停止,重新偵錯執行應用一次再次點選按鈕,即可看到類似下圖的執行結果:
在 Console 輸出的顯示上符合所撰寫的程式,顯示了 "地理位置" 的相關資訊(除非有特別設定,回傳的經緯度會依照模擬器預設值的回傳)。
上述有提到 Button 點選的畫面會卡住,其理由是在跳出該 "權限 Allow" 的 Dialog 之前,應該就要再撰寫對應處理的程式確認才行,或是事先就由 App 詢問相關權限的使用請求。
但這邊為了專注在本篇想要提及的範疇,於是只簡單的撰寫 .NET MAUI Essentials 的 "地理位置" 取得與其取得後的結果輸出。
嘿~~~
此實作就順利完成囉!
I'm a Microsoft MVP - Developer Technologies (From 2015 ~).
I focus on the following topics: Xamarin Technology, Azure, Mobile DevOps, and Microsoft EM+S.
If you want to know more about them, welcome to my website:
https://jamestsai.tw
本部落格文章之圖片相關後製處理皆透過 Techsmith 公司 所贊助其授權使用之 "Snagit" 與 "Snagit Editor" 軟體製作。