#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. пожалуйста, добавьте объяснение вашего решения