uniapp中获取APP应用签名信息
/** * 获取应用签名MD5 * returns {Promiseunknown} */functiongetAppSignatureMD5(){returnnewPromise((resolve){// 1. 环境检查if(typeofplusundefined||uni.getSystemInfoSync().platform!android){resolve(null);return;}try{// 2. 获取 ContextconstMainActivityplus.android.runtimeMainActivity();if(!MainActivity){console.error(MainActivity is null);resolve(null);return;}// 优先使用 Application ContextletContextplus.android.invoke(MainActivity,getApplicationContext);if(!Context){ContextMainActivity;}// 3. 获取 PackageManagerconstpackageManagerplus.android.invoke(Context,getPackageManager);if(!packageManager){console.error(PackageManager is null);resolve(null);return;}// 4. 获取 PackageInfoconstpackageNameplus.android.invoke(Context,getPackageName);constPackageManagerplus.android.importClass(android.content.pm.PackageManager);constflagsPackageManager.GET_SIGNATURES;// 64constpackageInfoplus.android.invoke(packageManager,getPackageInfo,packageName,flags);if(!packageInfo){console.error(PackageInfo is null);resolve(null);return;}// 5. 获取签名数组letsignaturespackageInfo.signatures;if(!signatures||signatures.length0){signaturesplus.android.getAttribute(packageInfo,signatures);}if(!signatures||signatures.length0){console.error(Signatures is empty);resolve(null);return;}// 6. 计算 MD5constsignaturesignatures[0];constMessageDigestplus.android.importClass(java.security.MessageDigest);constmd5MessageDigest.getInstance(MD5);constbytesplus.android.invoke(signature,toByteArray);plus.android.invoke(md5,update,bytes);constdigestplus.android.invoke(md5,digest);lethex;for(leti0;idigest.length;i){constbdigest[i];consth(b0xff).toString(16);if(h.length2){hex0;}hexh;if(idigest.length-1){hex:;}}resolve(hex.toUpperCase());}catch(e){console.error(Get signature failed:,e);resolve(null);}});}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2608525.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!