
androID应用/游戏上架国内渠道,国外GooglePlay接入的登录或者支付验证需要验证包名,versionCode,签名等应用信息,为了快速检查应用信息以工具化获取应用信息。
tips:在Activity下直接用getPackageManager可获取PackageManager实例1、应用名:getPackageManager().getApplicationInfo(packname,0).loadLabel(getPackageManager());返回CharSequence
2、应用Icon:getPackageManager().getApplicationInfo(packname,0).loadIcon(getPackageManager());返回drawable
3、VersionCode:getPackageManager().getPackageInfo(packname,0).versionCode
4、Versionname:getPackageManager().getPackageInfo(packname,0).versionname
5、targetSdkVersion:getPackageManager().getPackageInfo(packname,0).applicationInfo.targetSdkVersion
6、minSDKVersion:getPackageManager().getPackageInfo(packname,0).applicationInfo.minSdkVersion
7、启动项:getPackageManager().getLaunchIntentForPackage(packname)返回Intent,可用于跳转
获取启动项类名:getPackageManager().getLaunchIntentForPackage(packname).getComponent().getClassname()
8、权限:getPackageManager().getPackageInfo(packname,PackageManager.GET_PERMISSIONS).requestedPermissions返回类型为字符串数组
9、activity组件:getPackageManager().getPackageInfo(packname, PackageManager.GET_ACTIVITIES).activitIEs返回ActivityInfo数据类
PackageInfo packageInfo = getPackageManager().getPackageInfo(packname, PackageManager.GET_ACTIVITIES) for (ActivityInfo activityInfo : packageInfo.activitIEs){//获取activity名称Log.d(TAG,activityInfo.name+"\n"); }10、service组件:getPackageManager().getPackageInfo(packname, PackageManager.GET_SERVICES).services返回ServiceInfo数据类
PackageInfo packageInfo = getPackageManager().getPackageInfo(packname, PackageManager.GET_SERVICES) for (ServiceInfo serviceInfo : packageInfo.services){//获取service名称Log.d(TAG,serviceInfo.name+"\n"); }11、provIDer组件:getPackageManager().getPackageInfo(packname, PackageManager.GET_PROVIDERS).provIDers返回ProvIDerInfo数据类
PackageInfo packageInfo = getPackageManager().getPackageInfo(packname, PackageManager.GET_PROVIDERS) for (ProvIDerInfo provIDerInfo : packageInfo.provIDers){//获取provIDer名称Log.d(TAG,activityInfo.name+"\n"); }12、获取keyhash:
/**获取Keyhash*/ public static String getKeyhash(Activity activity, String packname){ String KeyHash = ""; try { int i = 0; PackageInfo info = activity.getPackageManager().getPackageInfo( packname, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { i++; MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); KeyHash = Base64.encodetoString(md.digest(), Base64.DEFAulT); //KeyHash Log.e(tag, "KeyHash: " + KeyHash); } } catch (Exception e) { Log.e(tag,"获取keyhash失败"+e.getMessage()); KeyHash = ""; } return KeyHash; }13、获取签名MD5,SHA1,SHA256:
/**获取SHA1 * @param activity 当前activity * @param packname 包名 * @param type 获取数据类型:MD5,SHA1,SHA256 * */ public static String getSignatures(Activity activity, String packname, String type){ String sha1 = ""; PackageInfo info = null; try { info = activity.getPackageManager().getPackageInfo(packname, PackageManager.GET_SIGNATURES); byte[] cert = info.signatures[0].toByteArray(); //type:MD5,SHA1,SHA256 MessageDigest md = MessageDigest.getInstance(type); byte[] publicKey = md.digest(cert); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < publicKey.length; i++) { String appendString = Integer.toHexString(0xFF & publicKey[i]) .toupperCase(Locale.US); if (appendString.length() == 1){ hexString.append("0"); } hexString.append(appendString); hexString.append(":"); } String result = hexString.toString(); Log.d(tag,"SHA1:"+result.substring(0, result.length()-1)); return result.substring(0, result.length()-1); } catch (NoSuchAlgorithmException e) { e.printstacktrace(); } catch (PackageManager.nameNotFoundException e) { e.printstacktrace(); } return null; }14、获取Meta_DATA标签指定key的value
/**获取节点value*/ public static String getMeta(Activity activity, String packname, String key){ ApplicationInfo applicationInfo = null; String value = ""; try { applicationInfo = activity.getPackageManager().getApplicationInfo(packname,PackageManager.GET_Meta_DATA); value = String.valueOf(applicationInfo.MetaData.get(key)); } catch (PackageManager.nameNotFoundException e) { e.printstacktrace(); }catch (NullPointerException e){ e.printstacktrace(); } return value; } 总结 以上是内存溢出为你收集整理的Android通过包名获取应用信息全部内容,希望文章能够帮你解决Android通过包名获取应用信息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)