C# 读取APK包的包名

在C#开发过程中,有时候要使用到APK的包名,对应用进行一些操作,C#没有直接对APK包进行的操作,这里推荐两个库,可以方便的拿到APK包名:

Androidxml 版本 1.1.24

SharpCompress 版本 0.37.2

using AndroidXml;
using SharpCompress.Archives;

/// <summary>
/// 获取Apk包名
/// </summary>
public static string GetPackageNameFromApk(string apkPath)
{
    Stream stream;
    using (FileStream fileStream = new FileStream(apkPath, FileMode.Open))
    {
        stream = fileStream;
        using IArchive zipReader = ArchiveFactory.Open(stream);
        IArchiveEntry adf = zipReader.Entries.FirstOrDefault(w => w.Key == "AndroidManifest.xml");
        if (adf == null)
        {
            return string.Empty;
        }
        using MemoryStream memoryStream = new();
        adf.OpenEntryStream().CopyTo(memoryStream);
        memoryStream.Seek(0, SeekOrigin.Begin);
        AndroidXmlReader reader = new AndroidXmlReader(memoryStream);
        while (reader.Read())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    for (int i = 0; i < reader.AttributeCount; i++)
                    {
                        reader.MoveToAttribute(i);
                        //只读取包名的过滤条件
                        if (reader.Name != "package")
                        {
                            continue;
                        }
                        return reader.Value;
                    }
                    reader.MoveToElement();
                    break;
            }
        }|
    }
    return string.Empty;
}
posted @ 2026-08-10 10:57  Poetindusk  阅读(2)  评论(0)    收藏  举报