Xamarin.Forms中DependencyService的使用

Xamarin.Forms中DependencyService的使用

在Xamarin.Forms中,我们经常会根据各个平台的特性特殊处理一些需求,比如:读取应用的版本号。

在此也以读取应用版本号为例,练习DependencyService用法:

创建IPlatformInfoService接口:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4
 5 namespace XFPractice.Service
 6 {
 7     public interface IPlatformInfoService
 8     {
 9
10         /// <summary>
11         /// 获取应用版本
12         /// </summary>
13         /// <returns></returns>
14         string GetAppVersion();
15
16     }
17 }

在Android创建ImpDroidService实现IPlatformInfoService接口:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 using Android.App;
 7 using Android.Content;
 8 using Android.Content.PM;
 9 using Android.OS;
10 using Android.Runtime;
11 using Android.Views;
12 using Android.Widget;
13 using Xamarin.Forms;
14 using XFPractice.Service;
15
16
17 [assembly: Dependency(typeof(XFPractice.Droid.ImpService.ImpDroidService))]
18 namespace XFPractice.Droid.ImpService
19 {
20     public class ImpDroidService: IPlatformInfoService
21     {
22         public string GetAppVersion()
23         {
24             var context = Android.App.Application.Context;
25             var packageInfo = context.PackageManager.GetPackageInfo(
26                 context.PackageName, PackageInfoFlags.Configurations);
27             return packageInfo.VersionName;
28         }
29     }
30 }

在iOS创建ImpiOSService实现IPlatformInfoService接口:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 using Foundation;
 7 using UIKit;
 8 using Xamarin.Forms;
 9 using XFPractice.Service;
10
11
12 [assembly: Dependency(typeof(XFPractice.iOS.ImpService.ImpiOSService))]
13 namespace XFPractice.iOS.ImpService
14 {
15     public class ImpiOSService : IPlatformInfoService
16     {
17         public string GetAppVersion()
18         {
19             var version = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion");
20             return version.ToString();
21         }
22     }
23 }

使用:

1  private readonly IPlatformInfoService _platformService;
2
3  _platformService = DependencyService.Get<IPlatformInfoService>();
4
5  var AppVersion = _platformService.GetAppVersion();

这样我们就能读取到App的版本了。

原文地址:https://www.cnblogs.com/devin_zhou/p/8313352.html

时间: 2024-10-25 14:14:50

Xamarin.Forms中DependencyService的使用的相关文章

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装 在移动应用开发中,经常需要判断一个app是否安装,iOS中有什么方式可以判断app是否安装呢? 这里介绍通过Url Scheme来判断应用是否安装. Url Scheme在这里就不详讲了,可以看文章URL Schemes 使用详解. 首先我们来看看在原生iOS开发中Objective-C如何编写判断代码: if ([[UIApplication sharedApplication] canOpenURL:[NSURL

Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的:iOS的活动指示器是灰色的:Windows Phone的活动指示器是蓝色的.如果开发者想要让各个平台下活动指示器的颜色统一,可以使用ActivityIndicator定义的Color属性,其语法形式如下: <ActivityIndicator Color="activityIndicatorC

Andrioid FileProvider在Xamarin.Forms中的使用

Andrioid FileProvider在Xamarin.Forms中的使用 Android 7.0到来后,为了进一步提高私有文件的安全性,Android不再由开发者放宽私有文件的访问权限,之前我们一直使用"file:///"绝对路径来传递文件地址的方式, 在接收方访问时会触发SecurityException的异常. 因此在提供文件给第三方应用访问时,我们就会用到FileProvider. FileProvider使用方法: 1.在AndroidManifest.xml里声明Pro

Xamarin.Forms中实现CheckBox控件

Xamarin.Forms中实现CheckBox控件 由于Xamarin.Forms中没有Checkbox这个基础控件,我们就只能自己来实现啦! 这里采用的是继承Image来实现Checkbox控件,代码如下所示: IconUnChecked :未选中状态的图片名称 IconChecked:选中状态的图片名称 using System; using System.Collections.Generic; using System.ComponentModel; using System.Text

xamarin forms中的Button文本默认大写

问题来源 使用xamarin forms创建的android项目中,Button.Toolbar的右侧菜单按钮上的如果是字母的话,在android5.0以上,默认的文本都是大写,这种情况iOS项目不存在,是正常的显示.google公司把android的文本默认大写,这个肯定和英语国家阅读习惯有关,但是iOS却是正常显示,有点难以解释google为什么将android的按钮文本默认成大写.问题如图: 分析 其实这个问题的产生的原因还是因为 在5.0中在Button使用的Theme是这个,默认已经t

Xamarin.Forms中 Navigation,NavigationPage详解

1.Xamarin Forms下有四个成员类:Element,VisualElement,Page,NavigationPage 基类为Element,继承的子类分别是VisualElement,Page,NavigationPage. 2.Navigation 为VisualElement的一个成员对象,该对象是INavigation接口类型的. 3.INavigation接口中有5个方法,如下 namespace Xamarin.Forms { public interface INavig

Xamarin.Forms中为WebView指定数据来源Source

网页视图WebView用来显示HTML和网页形式内容.使用这种方式,可以借助网页形式进行界面设计,并利于更新和维护.WebView从数据来源读取内容,并进行显示.WebView支持三种数据来源,分别为网站的网页.HTML代码和本地HTML文件.这三种形式都通过Source属性进行设置.在设置这三种形式来源,需要注意以下问题: 第一,使用网站网页,需要指定该网页的完整路径,包括http://或者https://部分. 第二,使用HTML代码,需要将该内容保存为一个字符串.在赋值的时候,使用@符号标

Xamarin.Forms WebView

目前本地或网络的网页内容和文件加载 WebView是在您的应用程序显示Web和HTML内容的视图.不像OpenUri,这需要用户在Web浏览器的设备上,WebView中显示您的应用程序内的HTML内容. 本指南由以下几部分组成: 内容?- web视图支持各种内容源,包括嵌入的HTML,网页和HTML字符串. 导航?-网页视图包括导航到特定页面,回到主页. 活动?–监听并通过在WebView中用户所采取的行动作出回应. 性能?-了解的WebView的每个平台上的性能特点. 权限?-了解如何设置权限

Xamarin.Forms探索--使用 Xamarin.Forms 来创建跨平台的用户界面

Xamarin.Forms 是一个跨平台的.基于原生控件的UI工具包,开发人员可以轻松的创建适用于 Android,iOS 以及 Windows Phone的用户界面.与HTML 5 不同的时,Xamarin.Forms 通过使用平台的原生控件来渲染用户界面,使用 Xamarin.Forms 的 App在外观上与平台完全一致.Xamarin.Forms最大的特点是:一次编写,各处使用,原生展现,这也是最吸引我的地方,下图就是一个简单的示例: 接下来我们有一系列的文章来介绍如何使用 Xamarin