我怎么知道(例如在 Activity 中)该应用程序是从 Eclipse 安装和运行的(通过 USB 插入移动设备)?
问问题
92 次
2 回答
3
所有应用程序都由证书签名。即使由 Eclipse 启动。在 Eclipse 中使用 android SDK 时,会默认创建一个调试密钥库,并在每次使用 IDE 构建应用程序并将其推送到设备/模拟器时使用。
您可以在代码中获取有关密钥库的信息,并验证它是您自己的签名代码还是其他代码。我在 Eclipse 中的应用程序上使用了下面的快速而肮脏的代码:
try {
PackageInfo pi = this.getPackageManager().getPackageInfo( this.getPackageName(), PackageManager.GET_SIGNATURES);
Signature[] signatures = pi.signatures;
byte[] cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory cf = CertificateFactory.getInstance("X509");
X509Certificate cf509 = (X509Certificate) cf.generateCertificate(input);
Log.d(LOG_TAG, "Certificate issued by: " + cf509.getIssuerDN() );
} catch ( Exception e ) {
结果是:
Certificate issued by: CN=Android Debug, O=Android, C=US
更好的结构化代码和信用转到此链接: http ://thomascannon.net/misc/android_apk_certificate/
于 2012-10-04T14:04:27.677 回答
1
使用android:debuggable =true 标志从 Eclipse 构建您的应用程序。然后你可以用这种方法从应用程序中检查它的值:Getting "debuggable" value of androidManifest from code?
于 2012-10-04T12:51:39.030 回答