第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何使用 plugin.geolocator 包解決未實(shí)現(xiàn)的異常?

如何使用 plugin.geolocator 包解決未實(shí)現(xiàn)的異常?

C#
拉丁的傳說 2022-11-22 15:46:46
我正在嘗試創(chuàng)建一個(gè)應(yīng)用程序。在這里,我試圖通過單擊按鈕來獲取用戶的當(dāng)前位置。但它會產(chǎn)生類似Not Implemented 異常的異常 - 此功能未在此程序集的可移植版本中實(shí)現(xiàn)。您應(yīng)該從主應(yīng)用程序項(xiàng)目中引用 NuGet 包,以便引用特定于平臺的實(shí)現(xiàn)我已經(jīng)清理并重建了解決方案。并且我開啟了access_fine_location、access_coarse_location的權(quán)限。我添加了 plugin.current 并在 mainactivity.cs 文件中添加了一個(gè)活動。         string answer ="";           try           {                await CrossGeolocator.Current.StartListeningAsync(new                   TimeSpan(20000),10);                if (CrossGeolocator.Current.IsListening)                {                    var locator = CrossGeolocator.Current;                    locator.DesiredAccuracy = 50;                    var position = await                       locator.GetPositionAsync(TimeSpan.FromSeconds(20000));                    string lat = position.Latitude.ToString();                    string lon = position.Longitude.ToString();                    answer = lat + lon;                }                else                {                    answer= "Not listening";                }            }            catch (Exception ex)            {                answer= ex.Message;            }我需要包含經(jīng)度和緯度值的結(jié)果。我必須在我的項(xiàng)目中做什么?
查看完整描述

3 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

您是否在共享項(xiàng)目和平臺項(xiàng)目上都安裝了 NuGet 包?在這種情況下,錯(cuò)誤消息非常準(zhǔn)確。這里基本上發(fā)生的是這個(gè)插件安裝了一種依賴服務(wù)的形式,它具有特定于平臺的實(shí)現(xiàn),并且只是您共享項(xiàng)目上的一個(gè)接口。


出于某種原因,您的調(diào)用最終出現(xiàn)在共享代碼中,該代碼僅實(shí)現(xiàn)此異常以讓您知道您來錯(cuò)地方了。這通常是因?yàn)槟钠脚_項(xiàng)目上沒有安裝包,或者鏈接器“優(yōu)化掉”了包。這往往會發(fā)生,因?yàn)榫幾g器注意到您的項(xiàng)目沒有對該庫的引用,因此它會剝離它以使其占用更少的空間。


為了確保這最后一件事不會發(fā)生,您可以進(jìn)入您的平臺項(xiàng)目,在本例中為 Android 并進(jìn)入MainActivity.cs并添加一個(gè)對該插件中對象的虛擬引用。例如,添加以下內(nèi)容:


protected override void OnCreate(Bundle savedInstanceState)

{

    TabLayoutResource = Resource.Layout.Tabbar;

    ToolbarResource = Resource.Layout.Toolbar;


    base.OnCreate(savedInstanceState);


    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);


    // THIS WAS ADDED

    var foo = new Plugin.Geolocator.Abstractions.Address();


    LoadApplication(new App());

}

這實(shí)際上是許多這些庫曾經(jīng)有一個(gè)Init方法的原因。


說了這么多,我實(shí)際上不得不同意 Akshay 在另一個(gè)答案中的觀點(diǎn),如果可能的話,你可能想看看升級你的項(xiàng)目以使用 .NET Standard 并移動到 Xamarin.Essentials 庫,它可以解決所有這些痛苦離開。


查看完整回答
反對 回復(fù) 2022-11-22
?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

我也在我的 Xamarin.Forms 應(yīng)用程序中實(shí)現(xiàn)了 GPS 跟蹤功能。根據(jù)我的個(gè)人經(jīng)驗(yàn),Geolocator 插件無法按預(yù)期與 Xamarin.Forms 一起使用,并且也存在一些問題和限制。本插件參考Xamarin Essentials Geolocation開發(fā)。我建議您應(yīng)該使用 Xamarin Essentials 而不是 Geolocator 插件,因?yàn)樗袚?jù)可查且易于實(shí)施,沒有任何重大問題。您可以從以下鏈接找到實(shí)施 Xamarin Essentials Geolocation 的分步指南:

https://learn.microsoft.com/en-us/xamarin/essentials/geolocation?tabs=android


查看完整回答
反對 回復(fù) 2022-11-22
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

這里有一個(gè)我經(jīng)常使用的小建議:如果您遇到問題但無法解決,請嘗試創(chuàng)建一個(gè)單獨(dú)的小項(xiàng)目,并提供有關(guān)其工作原理的分步教程。通常它是有效的,你可以找出你的主要解決方案到底出了什么問題。


編輯:


鏈接到 DependencyService


很快,您必須創(chuàng)建您將使用的接口,即IMyInterface. 之后,為 Android/iOS 編寫具有接口實(shí)現(xiàn)的平臺特定類。當(dāng)你寫它的時(shí)候,你可以使用像這樣的方法: DependencyService.Get<IMyInterface>().YourMethod()。


編輯 2:


您必須為特定于平臺的類添加此內(nèi)容:


[assembly: Dependency(typeof(MyCustomClass))]    // Check this assembly

namespace ISSO_I.Droid.PlatformSpecific

{

    public class MyCustomClass: IMyInterface

    {

     /// your code here

    }

}

編輯 3:


呼叫位置更新:


protected override void OnAppearing()

        {

            base.OnAppearing();

            ToIssoView = false;

            RequestLocationUpdates(); // Call this method

        }

請求位置更新的方法:


public async void RequestLocationUpdates()

        {

            /// check permission for location updates

            var hasPermission = await CommonStaffUtils.CheckPermissions(Permission.Location);

            if (!hasPermission)

                return;

            if (CrossGeolocator.Current.IsListening) return;

            MyMap.MyLocationEnabled = true;

            CrossGeolocator.Current.PositionChanged += Current_PositionChanged;

            CrossGeolocator.Current.PositionError += Current_PositionError;

            await CrossGeolocator.Current.StartListeningAsync(TimeSpan.FromSeconds(1), 5);

        }


public static async Task<bool> CheckPermissions(Permission permission)

        {

            var permissionStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(permission);

            var request = false;

            if (permissionStatus == PermissionStatus.Denied)

            {

                if (Device.RuntimePlatform == Device.iOS)

                {


                    var title = $"{permission} Permission";

                    var question = $"To use this plugin the {permission} permission is required. Please go into Settings and turn on {permission} for the app.";

                    const string positive = "Settings";

                    const string negative = "Maybe Later";

                    var task = Application.Current?.MainPage?.DisplayAlert(title, question, positive, negative);

                    if (task == null)

                        return false;


                    var result = await task;

                    if (result)

                    {

                        CrossPermissions.Current.OpenAppSettings();

                    }


                    return false;

                }


                request = true;


            }


            if (!request && permissionStatus == PermissionStatus.Granted) return true;

            {

                var newStatus = await CrossPermissions.Current.RequestPermissionsAsync(permission);

                if (!newStatus.ContainsKey(permission) || newStatus[permission] == PermissionStatus.Granted) return true;

                var title = $"{permission} Permission";

                var question = $"To use the plugin the {permission} permission is required.";

                const string positive = "Settings";

                const string negative = "Maybe Later";

                var task = Application.Current?.MainPage?.DisplayAlert(title, question, positive, negative);

                if (task == null)

                    return false;


                var result = await task;

                if (result)

                {

                    CrossPermissions.Current.OpenAppSettings();

                }

                return false;

            }



查看完整回答
反對 回復(fù) 2022-11-22
  • 3 回答
  • 0 關(guān)注
  • 148 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號