2015-04-03 80 views
0

是否可以使用特定于平台的代码如下所示:Xamarin共享项目 - 利用平台的具体服务/ API的

#if __ANDROID__ 
    using Android.App; 
    using Android.Content; 
    using Android.Locations; 
#endif 

public GPSNavigation() 
{ 
    #if __ANDROID__ 
     manager = (LocationManager)DependencyService.Get<Activity>().GetSystemService(Context.LocationService); 
     Criteria criteria = new Criteria 
           { 
            Accuracy = Accuracy.Fine 
           }; 
     IList<string> acceptableLocationProviders = manager.GetProviders(criteria, true); 
     if (acceptableLocationProviders.Any()) 
     { 
      locationProvider = acceptableLocationProviders.First(); 
     } 
     else 
     { 
      locationProvider = ""; 
     } 
    #endif 
    #if __IOS__ 
    #endif 
} 

的代码可以编译和运行,但我得到的运行时错误“未知的标识符:”所有Android特定代码,例如“未知标识符:LocationManager”在执行时。在共享项目中是否无法引用特定于平台的服务/ API?

回答

0

是的,在回答你的问题时,这是可能的。共享项目获取引用它们的项目的任何引用。否则它不会编译。您的代码中必须有逻辑错误。

从您的代码我怀疑Context.LocationService的值是LocationManager和对DependencyService的调用不解决它。为什么发生这种情况与使用共享项目没有直接关系,而是需要调试的东西。

此外,根据你的代码,你可能能够采取#elif指令IOS,而不是单独的#ENDIF优势和#如果IOS语句但更多的是一个组织的偏好。

相关问题