23 Haziran 2014 Pazartesi

XE5 Android IMEI Okuma

XE5 Android IMEI Okuma

Merhabalar XE5 ile zaman ilerledikçe kendi uygulamalarımızı geliştirmeye devam ediyoruz. Günü geldikçede kendimizde lisanslı uygulamalar üretme isteği er yada geç uyanacağı kesindir. Bunun için birçok çeşitli yöntemler vardır; Kullanıcı adına göre, Modeme göre veya Cihaz sayısına göre buda IMEI numaraları ile gerçekleşmektedir. IMEI NEDIR?



Bu sayede yazdığınız uygulamalarda kullanıcıların kaç hesabı olursa olsun sizin belirlediğiniz IMEI numaralarına göre bir lisanslama gerçekleştirirseniz çaresiz sınırlar içerisinde kullanmak durumunda kalacaktır. Lafı fazla uzatmadan kodumuzu paylasıyorum bir fonksiyon içerisinde yazılı olan bu kodumuzun çalışması için Uses kısmına aşağıdakileride yazmayı unutmamanız gerekmektedir.
uses
Androidapi.JNI.Telephony, Androidapi.JNI.Provider ,
Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,FMX.Helpers.Android;

READ_PHONE_STATE permission = true  //Okumak izin sağlamış oluyoruz

function IMEIOku():String;
var
obj     : JObject;
tm      : JTelephonyManager;
strIMEI : String;
begin
obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
if obj <> nil then
begin
tm := TJTelephonyManager.Wrap( (obj as ILocalObject).GetObjectID );
if tm <> nil then
strIMEI := JStringToString(tm.getDeviceId);
end;
if strIMEI = '' then
strIMEI := JStringToString( TJSettings_Secure.JavaClass.getString( SharedActivity.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID ) );
Result := strIMEI;
end;

    Bu güzel örneğini bizlere sunan Muharrem ARMAN (mrmarman) hocamıza teşekkürler.