【问题标题】:Xamarin Cross Platform Application Package Name in C#C# 中的 Xamarin 跨平台应用程序包名称
【发布时间】:2016-09-19 01:08:27
【问题描述】:

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

喜欢this(链接是如何访问Android,我想知道在可移植类代码中是否有预先存在的C#跨平台方式来访问它。)

不是this

【问题讨论】:

  • Xamarin.Forms 中没有方法,但如果您愿意,您可以创建依赖服务以从各个平台获取包名称。
  • 哦,好吧。我希望避免这种情况。完成后我会在此处发布解决方案(适用于 iOS 和 Android)。

标签: xamarin


【解决方案1】:

我得到了你的问题的答案,但它正在使用依赖服务来工作。如果没有 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;

希望对他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2018-12-04
    • 2014-11-03
    • 2011-01-24
    相关资源
    最近更新 更多