القائمة الرئيسية

الصفحات

المهاتفة في أندرويد ستوديو

 

المهاتفة في أندرويد ستوديو


1.    تقديم

إذا كان التطبيق الذي نريد إنشاءه يحتاج في برنامج أندرويد ستوديو Android Studio أن يقوم بالمهاتفة كالمكالمات الهاتفية والرسائل النصية فأننا نحتاج أن نتأكد من أن الجهاز الذي يقوم بتشغيل تطبيقنا يمكنه ذلك. و لهذا فإننا نقوم بالذكر في ملف Manifest  أن التطبيق لا يمكن أن يشتغل إلا على جهاز فيه خدمات المهاتفة، و ذلك بإضافة السطر التالي:


<uses-feature android:name="android.hardware.telephony"

android:required="true" />


 الآن يمكننا أن نستخدم Api الخاص بالمهاتفة والذي يمثله TelephonyManager. الإجراءات الموجدة في هذه classe تسمح لنا بالحصول على معلومات حول الشبكة والنفوذ لمعلومات الزبون.


 TelephonyManager manager =

Context.getSystemService(Context.TELEPHONY_SERVICE);

 


2.    إستخلاص المعلومات

من أجل الحصول على معلومات الجهاز لا بد أن الإذن التالي في ملف Manifest  كما يلي:


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


3.     إستخلاص المعلومات الثابتة

يمكننا الحصول على عدة معلومات حول الجهاز:

أولا يمكننا تحديد نوع جهاز الهاتف بإستخدام int getPhoneType() هذا الإجراء يعيد القيم التالية:

1.    القيمة TelephonyManager.PHONE_TYPE_NONE  إذا كان الجهاز ليس هاتفا أو لا يستطيع أن يقدم خدمات المهاتفة.

2.    القيمة  TelephonyManager.PHONE_TYPE_GSM  إذا كان الهاتف يشتغل على نورم GSM.

3.    القيمة TelephonyManager.PHONE_TYPE_CDMA  إذا كان الهاتف يشتغل على نورم CDMA. المستخدمة في أمريكا الشمالية.

 يمكننا الحصول على معرف الجهاز بإستخدام الإجراء String getDeviceId()، يمكننا أحيانا الحصول على رقم هاتف مستخدم التطبيق بإستخدام الإجراء String getLineNumber().

 


4.    إجراء مكالمة هاتفية

يمكن القيام بإجراء مكالمة هاتفية بطريقتين الطريقة الأولى بتشغيل التطبيق الإفتراضي للمكالمات من التطبيق أو من التطبيق مباشرة. في الطريقة الأولى تتم العملية بتشغيل Intent  التي فعلها  Intent.ACTION_CALL  و معطياتها tel:phonenumber رقم الهاتف المراد مكالمته كما في المثال التالي:


Intent appel = new Intent(Intent.ACTION_DIAL,

Uri.parse("tel:0660000000"));

startActivity(appel);


هذه التعليمات تقوم بتشغيل تطبيق المهاتفة الإفتراضي والمستخدم يقوم بضغط زر الطلب بنفسه، هذه العملية لا تحتاج أذونات لأن المستخدم هو من يقوم بإجراء المكالمة. الطريقة الثانية إذا أردنا أن يقوم التطبيق بإجراء المكالمة مباشرة فنحتاج لأذن خاص نضعه في ملف Manifest :


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


و نحتاج في هذه الحالة للتعليمات التالية:


Intent appel = new Intent(Intent. ACTION_CALL,

Uri.parse("tel:0660000000"));

startActivity(appel);

 

يمكننا تغيير رقم الهاتف و يمكن إعطاؤه كمتغير مثلا من EditText  :


Intent appel = new Intent(Intent. ACTION_CALL,
Uri.parse("tel:"+EtPhoneNumber.getText().toString()"));

startActivity(appel);


كل هذه التعليمات لا بد أن تكون في إجراء يمكن مثلا ربطه برز في واجهة المستخدم.


5. إرسال رسالة نصية

كما في المكالمات الهاتفية، يمكننا أرسال رسالة نصية إما عن طريق التطبيق الإفتراضي الخاص بإرسال الرسائل أو من التطبيق مباشرة.

في الطريقة الأولى يقوم التطبيق Intent بتشغيل  و فعلها Intent.ACTION_SENDTO و معطياتها تحتوي رقم الهاتف smsto:numéro_de_téléphone  و كذلك محتوى الرسالة النصية sms_body:

 

Intent sms = new Intent(Intent.ACTION_SENDTO,
Uri.parse("smsto:0660000000");
sms.putExtra("sms_body", "Salut les étudiants !");

startActivity(sms);


أما الطريقة الثانية فهي من التطبيق مباشرة، و هنا نحتاج للحصول على إذن إرسال رسالة نصية نضعه في ملف Manifest :


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


من أجل إرسال الرسالة نستخدم  SmsManagerو نقوم بإنشاء كائن منه:


SmsManager SmsManager.getDefault()


ثم نستخدم الإجراء:


void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) 


حيث:


1.    destinationAddress الرقم الذي نريد إرسال الرسالة له.

2.    scAddress رقم مركز إرسال الرسائل النصية و نضعها null  في أغلب الأحيان.

3.    Text نص الرسالة التي نريد إرسالها.

4.    sentIntent هي كائن من نوع PendingIntent يمكن إستخدامها للإستعلام إن كانت الرسالة أرسلت بنجاح أو فشل الإرسال، يمكن أن نضعها null .

5.    deliveryIntentهي كائن من نوع PendingIntent يمكن إستخدامها للحصول على معلومات إضافية حول إرسال الرسالة ، يمكن أن نضعها null .


و هذا بسيط حول لإرسال رسالة


SmsManager manager = SmsManager.getDefault();

manager.sendTextMessage("0660000000", null, "Salut les étudiants !",null, null);



ليصلك الجديد و تبقى دائما على إطلاع تابع مدوتنا و صفحاتنا على الفيس بوك : :الأستاذ بن مير عبد القادر و baek-oasis


تعليقات