Dancing green robot androidDancing green robot android Dancing green robot android Dancing green robot android Dancing green robot androidDancing green robot android Dancing green robot android Dancing green robot android

SMS Messaging in Android

 Section Feature image
အခု က်ဴတုိရီရယ္ေလးကေတာ႔ Posted by weimenglee ရဲ႕ SMS Messaging in Android ကုိ ျပန္စမ္းထားတာပါ။ author ရဲ႕ original ကုိၾကည္႔ခ်င္သူမ်ားကေတာ႔ ဒီလိပ္စာ အတုိင္းသြားႏုိင္ပါတယ္။
ဒီ က်ဴတုိရီရယ္ေလးကုိ စမ္းတဲ႔အခါ တကယ္ Devices မလုိအပ္ဘဲ Emulator ေလးႏွစ္ခုကုိ port နံပါတ္ေလးခြဲျပီး စမ္းႏုိင္္ တဲ႔အတြက္ အက်ိဳးမ်ားမယ္ထင္ျပီး မွ်ေ၀လုိက္ပါတယ္။
Android သည္ permission-based policy ကုိသုံးထားတဲ႔အတြက္ ကုိယ္႔ application ကလုိအပ္တဲ႔ permission ေတြကုိ AndroidManifest.xml မွာသြားျပီးသတ္မွတ္ေပးရမွာပါ။ အဲဒီလုိသတ္မွတ္ေပးလုိက္ျခင္းအားျဖင္႔ ကိုယ္႔ရဲ႕ application ကုိ install လုပ္လုိက္တဲ႔အခါမွာ ဒီ user ကုိဘာလုပ္ခြင္႔ (access permission) သတ္မွတ္ေပးတဲ႕ အခါရွင္းရွင္းလင္းလင္းျဖစ္သြားေစပါတယ္။ ခုေအာက္ကျပထားတဲ႔ screen shot မွာ AndroidManifest.xml မွာ SMS ကုိ Send လုပ္ဖုိ႔ permission နဲ႔ SMS ကုိ receive လုပ္ဖုိ႔ permission ေပးထားပါတယ္။
User Interface မွာေတာ႔ ဖုန္းနံပါတ္ထည္႔ဖုိ႕ EditText View ရယ္၊ SMS Message ေတြပုိ႔ဖုိ႔ EditText View ရယ္၊ Send ဖုိ႔ button တစ္ခု၊ information ေပးဖုိ႔ TextView ႏွစ္ခုထည္႔ထားတာ အခုလုိေတြ႕ရမွာပါ။
အခု SMS.java ဆုိတဲ႔ Activity မွာ Button View မွာListener ေတြထည္႔ျပီး SMS ပုိ႔တဲ႕ပုံစံတစ္ခု လုိမ်ိဳးစဥ္းစားၾကည္႔ၾကတာေပါ႕။ userကသာ ဘာစာမွမရုိက္ဘဲ SMS send ကုိႏွိပ္ရင္ message ေပးသင္႔ျပီေပါ႔။ မဟုတ္ရင္ ေတာ႔ SMS message ပုိ႔ေပးမွာပါ။ ခုလုိမ်ိဳးေရးလုိက္ပါတယ္။
SMS message ပုိ႔ခ်င္ရင္ေတာ႔ SmsManager class ကုိသုံးရမွာပါ။ တျခား class ေတြနဲ႔မတူတာက SmsManager object ေလးတစ္ခုလုိခ်င္ရင္ class ကုိတုိက္ရုိက္ instantiate လုပ္စရာမလုိဘဲ static method တစ္ခုျဖစ္တဲ႔ getDefault() နဲ႔ေခၚႏုိင္တာပါ။
sendTextMessage() သည္ SMS message ေတြကုိ PendingIntent နဲ႔ပုိ႔ပါတယ္။ PendingIntent object ကုိေနာင္တစ္ခ်ိန္မွာ target ဘယ္ေကာင္လဲဆုိတာကုိ ခြဲျခားဖုိ႔သုံးတာပါ။ ဥပမာ အေနနဲ႔ေျပာမယ္ဆုိရင္ message ပုိ႔ျပီးသြားရင္ PendingIntent object ကုိသုံးျပီး တျခား activity ကုိ ျပသႏုိင္ပါတယ္။ တကယ္လုိ႔ SMS message ပုိ႔ေနတဲ႔ အေျခေနကုိ ကုိေစာင္႔ၾကည္႔ခ်င္တယ္ဆုိရင္ အမွန္တကယ္ေတာ႕ PendingIntent object ကုိ BroadcastReceiver object ႏွစ္ခု နဲ႔တြဲသုံးရမွာပါ။ အခုဒီမွာလည္း Broadcast Reciever ႏွစ္ခုသုံးထားပါတယ္။
ပုံမွာျပထားတဲ႔ sms.sendTextMessage(phoneNumber,null,message,sendPI,deliveredPI);
မွာ sendPI နဲ႔ deliveredPI တုိ႔သည္႔ PendingIntent မ်ားျဖစ္ၾကပါတယ္။ ခုလုိ SMS Message ေတြပုိ႔ခ်င္ရင္ေတာ႔ android.telephony.SmsManager ဆုိတဲ႔ library ကုိေတာ႔ import လုပ္ရမွာေပါ႕။
ပုံမွာ ျပထားတဲ႔အတုိင္း PendingIntent object တစ္ခုျဖစ္တဲ႔ (sendPI) သည္ sending process ကုိ monitor လုပ္ဖုိ႔ပါ။ SMS message စပုိ႔တာနဲ႔ ဒီ event က fire ျဖစ္မွာပါ။
ေနာက္ တစ္ခု deliveredPI ကေတာ႔ dilevery process ကုိ monitors လုပ္ဖုိ႔ပါ။ သူကေတာ႔ SMS successfully delivered ျဖစ္မွသာ fire ျဖစ္မွာပါ။
ဒီလုိမ်ိဳး အဆင္႔ေတြမလုပ္ခ်င္ရင္ Intent object ကုိသုံးျပီး built-in SMS application ေတြေရးၾကည္႔ႏုိင္ပါတယ္ လုိ႔လည္းဆုိထားပါတယ္။
ဥပမာ
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra(“sms_body”, “Content of the SMS goes here…”);
sendIntent.setType(“vnd.android-dir/mms-sms”);
// Activity ကုိ start up လုပ္လုိက္တာပါ။
startActivity(sendIntent);
ခုဆုိရင္ေတာ႔ SMS ပုိ႔တဲ႔ အပုိင္းေတာ႔ျပီးျပီလုိ႔ဆုိရမွာေပါ႔။ SMS ကုိလက္ခံတဲ႔အပုိင္းကုိ ေလ႔လာၾကည္႔ရေအာင္။ incoming SMS message ေတြကုိေတာ႔ BroadcastReceiver object နဲ႔ျပန္လက္ခံႏုိင္ပါတယ္။ ဒီေတာ႔ ေနာက္ထပ္ SmsReceiver.java ကုိထပ္ထည္႔ပါမယ္။ ဒါဆုိရင္ AndroidManifest.xml မွာ SmsRceiver.java အတြက္ ထပ္ျပီး ထည္႔ေပးရမွာေပါ႔။
SMS Messages ကုိလက္ခံရရွိတဲ႔ အခ်ိန္မွာ, onCreate() method ကေနစျပီးေတာ႔ ေခၚပါလိမ္႕မယ္။ SMS message ေတြမွာ Bundle object ကေနတဆင္႔ Intent object ပါတြဲျပီး (onRecieve() ဆုိတဲ႔ method ရဲ႕ဒုတိယ parameterကုိ ဆုိလုိပါတယ္) ပါပါတယ္။ အဲ႔ဒီ message ေတြကုိ array Object ထဲမွာ PDU format နဲ႔သိမ္းထားပါတယ္။ ဒါေၾကာင္႔မုိ႔လုိ႔ အဲ႔ဒီထဲက message ေတြကို ဆြဲထုပ္ခ်င္ရင္ createFromPdu() method နဲ႔သုုံးျပီးဆြဲထုတ္ပါ။ SmsMessage ေတြကုိေတာ႔ ဒီ က်ဴတုိိရီရယ္မွာ Toast နဲ႔ဘဲျပထားပါတယ္။
ခုဆုိရင္ ဒီက်ဴတုိရီရယ္ေလးကုိ စမ္းဖုိ႔ Emulator ေလးႏွစ္ခုလုိအပ္မွာပါ။ ဒါေၾကာင္႔ cmd prompt ထဲကေန Emulator ႏွစ္ခု create လုပ္လုိက္ပါ။ ေအာက္ကေပးထားတဲ႔ပုံမွာ ဆုိရင္ Emulator ႏွစ္ခုရွိေနပါျပီ။
ဘာမွ မရုိက္ဘဲ SMS ပုိ႔ၾကည္႔ရင္ေတာ႔ ဒီလုိေပၚလာမွာပါ။
ကဲ စာရုိက္ျပီး SMS ပုိ႔ရင္ေတာ႔ SMS Sending ျဖစ္ေနပါျပီ
ေနာက္ေန႔မွဆုံၾကမယ္! :)
p.s အရင္ဆုိရင္ ျပံဳးခဲပါတယ္(ေမာင္ျပံဳးနဲ႔ဆန္႔က်န္ဘက္ :P ) ဒီေန႔ Connection တအားေကာင္းေနလုိ႔ပါ။
မူရင္းလင့္ : http://www.myanmartutorials.com/mobile/android/sms-messaging-in-android/ မွ ကူးယူေဖာ္ျပပါသည္။

No comments:

Post a Comment