Ограничить приложение для определенного номера IMEI

#android #imei

#Android #imei

Вопрос:

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

   So please help me how and where can I store the IMEI number in .apk file.
 

(Я использую Adobe Flash builder и пытаюсь использовать платформу Flex).

Комментарии:

1. Если список imeis является статическим, вы можете сохранить его в файле ресурсов и прочитать его из приложения. В противном случае, если список imeis может измениться, вам необходимо сохранить его на стороне сервера (для добавления, изменения или удаления) и извлечь из мобильного приложения.

2. Во-первых, спасибо, сэр, за ответ. Что я делаю, так это для каждого пользователя я спрашиваю его номер IMEI, и когда он отправляет по электронной почте, я помещаю его в пакет, компилирую и отправляю ему приложение. Это единственное приложение IMEI. Нет списка. Пожалуйста, помогите мне, в каком файле я могу сохранить IMEI, а затем вызвать этот файл во время выполнения приложения.

Ответ №1:

Согласно вашему объяснению в комментарии. Я бы сказал вам, что я думаю, что это не очень хорошее решение для идентификации. Я рекомендую вам иметь одно приложение и проверять IMEIS с базой данных на стороне сервера.

Также я должен сказать, что опытный пользователь может ПОДДЕЛАТЬ IMEI устройства.

Но в любом случае, если вы хотите создать свое решение, код довольно прост. Вам просто нужно сохранить IMEI со статической переменной и проверить его в основном действии. Если IMEI указан правильно, запустите приложение, в противном случае отобразите сообщение и закройте. Таким образом, у вас будет «одно приложение IMEI»

 public class MainActivity extends AppCompatActivity {

    private final static String AUTHORIZED_IMEI = "XXXXXXXXXXXXXX";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // get device IMEI
        TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        String deviceImei = telephonyManager.getDeviceId();

        if (AUTHORIZED_IMEI.equals(deviceImei)) {
            // AUTHORIZED
            // Code to run within onCreate
        } else {
            Toast.makeText(this, "DEVICE NOT AUTHORIZED", Toast.LENGTH_LONG).show();
            finish();
        }
    }
}
 

Также вам необходимо записать разрешение в файл манифеста

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 

ПРИМЕЧАНИЕ: в Android 6 вам необходимо обработать это разрешение во время выполнения.

Ответ №2:

 private final static String authorisedImei = "xxxxxxxx";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        // ActivityCompat#requestPermissions;
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
        } else {

            return;
        }
    }
        String deviceImei = telephonyManager.getDeviceId();

        if (authorisedImei.equals(deviceImei)) {
            textView = findViewById(R.id.text2);
            textView.setText(deviceImei   " - Authorised");
        }

        else {
          textView = findViewById(R.id.text2);
          textView.setText(deviceImei   " - Not authorised");

            new CountDownTimer(5000, 1000) {

                public void onTick(long millisUntilFinished) {
                    textView = findViewById(R.id.text1);
                    textView.setText("seconds remaining: "   millisUntilFinished / 1000);
                }

                public void onFinish() {
                    finish();
                }
            }.start();
        }
    }
}
 

Комментарии:

1. пожалуйста, добавьте объяснение вашего решения