المهاتفة في أندرويد ستوديو
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 :
Uri.parse("tel:"+EtPhoneNumber.getText().toString()"));
startActivity(appel);
كل هذه التعليمات لا بد أن تكون
في إجراء يمكن مثلا ربطه برز في واجهة المستخدم.
5. إرسال رسالة نصية
كما في المكالمات الهاتفية،
يمكننا أرسال رسالة نصية إما عن طريق التطبيق الإفتراضي الخاص بإرسال الرسائل أو
من التطبيق مباشرة.
في الطريقة الأولى يقوم التطبيق
Intent بتشغيل و فعلها Intent.ACTION_SENDTO و معطياتها تحتوي
رقم الهاتف smsto:numéro_de_téléphone و كذلك محتوى الرسالة النصية sms_body:
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
تعليقات
إرسال تعليق