Android通过包名获取应用信息

Android通过包名获取应用信息,第1张

概述android应用/游戏上架国内渠道,国外GooglePlay接入的登录或者支付验证需要验证包名,versionCode,签名等应用信息,为了快速检查应用信息以工具化获取应用信息。tips:在Activity下直接用getPackageManager可获取PackageManager实例1、应用名:getPackageManager().getApplicationIn

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通过包名获取应用信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1063699.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存