[英]Get APK package name
我可以从 JS 上传的文件中获取 APK 包名称吗?
我正在使用 HTML5 上传文件,我想获取所选文件的包名称。
<input type="file"/>
是否可以?
最后,我使用了惊人的JSZip库来获取 AndroidManifest.xml 内容并使用以下代码将其内容转换为可搜索的字符串:
function getPackageName(apkBlobAsByteArray) {
// Unzipping zip blob
var zip = new JSZip(apkBlobAsByteArray);
// Getting AndroidManifest.xml and decompress it
var androidCompress = zip.files['AndroidManifest.xml'];
var androidNonCompress = androidCompress._data.getContent();
// Reading to content to a searchable string
var packageNameArray = [];
var textArray = String(androidNonCompress).split(',');
for (var i = 0, len = textArray.length; i < len; i++) {
if (textArray[i] !== 0) {
packageNameArray.push(textArray[i]);
}
}
// Searching for package name
var startPattern = 'manifest';
var androidText = String.fromCharCode.apply(null, packageNameArray).toString().toLowerCase();
var packageName = androidText.substring(androidText.indexOf(startPattern) +
startPattern.length, androidText.indexOf('uses'));
// Remove version from package name
packageName = packageName.substring(0, packageName.indexOf(packageName.match(/\d+/)[0]));
return packageName;
}
现在你可以使用来自https://github.com/chenquincy/app-info-parser 的app-info-parser 。
在您的浏览器中,您可以使用 JS Deliver 来包含一个指向https://cdn.jsdelivr.net/gh/chenquincy/app-info-parser/dist/app-info-parser.min.js的脚本标签。
代码可能是这样的:
var parser = new AppInfoParser(files[0])
parser.parse().then(function (result) {
console.log('app info ----> ', result);
console.log('icon base64 ----> ', result.icon);
}).catch(function (err) {
console.log('err ----> ', err);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.