2010-07-16 44 views
2

有沒有一種方法可以在使用特設分發時發送應用程序(發送應用程序)代碼簽名(允許其僅在具有特定ID的設備上打開)測試人員或客戶作爲分包商)?Android應用特設分發和代碼簽名(檢測UID)

我知道我可以輕鬆地共享apk文件,但如果我不希望其他人在準備好之前重新分配應用程序,該怎麼辦?例如,我不希望測試人員能夠分發我的應用程序的未完成和錯誤版本。或者我想向我的客戶展示該應用的最終版本,但不允許他們在付款前分發。

回答

4

我做了類似的事情。

以前我得到的測試設備的IMEI

再上的onCreate()函數

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);  

String IMEITesterDevice = "1234123535346453634"; 

final TelephonyManager mTelephony = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    String AndroidDeviceId = mTelephony.getDeviceId(); 

if (AndroidDeviceId.contentEquals(IMEITesterDevice) //Not equal then 
super.finish(); //force to finish my app. 
... 
... 
... 
} 

UPDATE:

爲沒有電話支持,如平板電腦,你會得到設備null使用TelephonyManager,最好對某些設備使用Secure.ANDROID_ID ...

String AndroidDeviceId; 
final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);//for mobiles 
    if (mTelephony.getDeviceId() != null) 
     AndroidDeviceId = mTelephony.getDeviceId(); 
    else // Tablets 
     AndroidDeviceId = Secure.getString(
         getApplicationContext().getContentResolver(), 
         Secure.ANDROID_ID); 
+1

我不得不添加READ_PHONE_STATE權限,並將比較改爲「!AndroidDeviceId.contentEquals(IMEITesterDevice)」,但總的來說這個想法是正確的,謝謝! 順便說一句,這是一種恥辱,操作系統不能照顧到這一點,我們必須做這樣的代碼檢查... – 2010-07-16 16:08:16

+0

是非常重要的READ_PHONE_STATE使用TelephonyManager類的權限:),謝謝。 – Jorgesys 2010-07-16 16:11:00