Специальное распространение Android-приложения и подписывание кода (определение UID) - PullRequest
2 голосов
/ 16 июля 2010

Есть ли способ подписать код (чтобы позволить ему открывать только на устройстве с определенным идентификатором) ваше приложение для Android при использовании специальной рассылки (отправка приложения тестерам или клиентам в качестве субподрядчика)?

Я знаю, что могу поделиться файлом apk довольно легко, но что, если я не хочу, чтобы другие люди распространяли приложение до его готовности?Я не хочу, чтобы тестировщики могли распространять, например, незаконченную и ошибочную версию моего приложения.Или я хотел бы показать моему клиенту окончательную версию приложения, но не позволять им распространять его до тех пор, пока не будет произведена оплата.

1 Ответ

4 голосов
/ 16 июля 2010

Я сделал что-то похожее.

Ранее я получал 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.
...
...
...
}

ОБНОВЛЕНИЕ:

для устройств без поддержки телефонии, таких как планшеты, с 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);
...