2016-10-14 2 views
0

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

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

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

+0

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

+0

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

ответ

0

В соответствии с вашими пояснениями в комментарии. Я бы сказал, что это нехорошее решение «identificaiton». Я рекомендую вам иметь одно приложение и проверять IMEI с базой данных на стороне сервера.

Также я должен сказать, что продвинутый пользователь может ИЗВЕСТИТ 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, вы должны справиться с этой permisison во время выполнения.

0
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

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

Смежные вопросы