2012-10-04 35 views
2

我如何知道(例如在Activity中)該應用程序是從Eclipse安裝並運行的(通過USB插入移動設備)?瞭解Android應用程序是否從Eclipse運行

+0

你爲什麼想要那樣做?也許還有另一個根本問題的解決方案。 – Bananeweizen

+0

這不是問題:)它只會幫助我發展。因爲當我開發時,我連接到測試服務器並在生產服務器上進行生產。所以我只想更小心些。 – Trick

回答

3

所有應用程序都由證書籤名。即使在日食發射時。在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/

+0

好主意!有用 :) – Trick

相關問題