【问题标题】:How to get the developed organization name by using apk programmatically?如何以编程方式使用 apk 获取开发的组织名称?
【发布时间】:2018-05-07 13:28:11
【问题描述】:

如果有人知道如何通过在 android 中使用 apk 以编程方式获取开发组织名称,请分享您的建议。仅供参考,我在这里附上图片。

【问题讨论】:

  • 您可以通过调用getPackageManager.getInstalledPackages() 获取所有PackageInfo 的列表。每个PackageInfo 都有一个字符串字段packageName,这似乎就是您所追求的。例如,对于上述内容,它将是 com.whatsapp

标签: android apk android-applicationinfo


【解决方案1】:

没有直接的方法可以从设置中读取此信息。但是,您可以从 APK 的签名证书中读取此信息,如下所示:

 public String getOrganizationName(final String packageName) {
        String orgName = null;
        try {
            Signature signatures[] = getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES).signatures;                
            for (Signature signature : signatures) {
                final byte[] rawCert = signature.toByteArray();
                InputStream certStream = new ByteArrayInputStream(rawCert);

                try {
                    CertificateFactory certFactory = CertificateFactory.getInstance("X509");
                    X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(certStream);
                    String issuerDn = x509Cert.getIssuerDN().getName();
                    int indexOfOrg = issuerDn.indexOf("O=");
                    int indexOfSeperator = issuerDn.indexOf(",", indexOfOrg);
                    final String organizationName = issuerDn.substring(indexOfOrg+2, indexOfSeperator);
                    if (orgName == null) {
                        orgName = organizationName;
                    }
                    Log.d("Test", "Organization Name: " + organizationName);

                } catch (Exception e) {
                     e.printStackTrace();
                }

            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return orgName;
 }

调用此方法如下:

getOrganizationName("com.whatsapp"); //You can use any installed package name

它会返回:

WhatsApp Inc.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2019-03-07
    • 2023-04-04
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多