C#中的Xamarin跨平台应用程序包名称

时间:2016-05-21 23:56:31

标签: xamarin

有没有办法以编程方式访问Xamarin便携式C#代码中的应用程序包名称/命名空间/版本信息?

this类似(链接是如何访问Android的,我想知道是否存在预先存在的C#跨平台方式来访问便携式类代码中的这种方式。)

不是this

1 个答案:

答案 0 :(得分:14)

我得到了你的问题的答案,但它正在使用依赖服务工作。如果没有Xamarin插件,没有其他办法。 这是代码:

pcl项目中的接口:

public interface IPackageName
{
    string PackageName { get; }
}

Android实施:

public class PackageNameDroid : IPackageName
{
    public PackageNameDroid()
    {
    }

    public string PackageName
    {
        get { return Application.Context.PackageName; }
    }
}

iOS实施:

public class PackageNameIOS : IPackageName
{

    public PackageNameIOS()
    {
    }

    public string PackageName
    {
        get { return NSBundle.MainBundle.BundleIdentifier; }
    }

}

不要忘记在Android文件中标记依赖服务的平台文件:

[assembly: Xamarin.Forms.Dependency(typeof(PackageNameDroid))]

和iOS文件:

[assembly: Xamarin.Forms.Dependency(typeof(PackageNameIOS))]

现在你很高兴可以在PCL中使用它,就像那样:

string packageName = DependencyService.Get<IPackageName>().PackageName;

希望它可以帮助他人。