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;
}

浙公网安备 33010602011771号