Bài 46: Sử dụng .Net Webservice trong AndroidBài 47: Xử lý tin nhắn SMS bằng BroadCastReceiverBài 48: Cách sử dụng Facebook SDK trong AndroidBài 49: Cách debug ứng dụng trên thiết bị Android bằng WIFI (không cần cắm USB Cable)Bài 50: Cách sử dụng Google Cloud Message trong AndroidBài 51: Xử lý JSON trong AndroidBài 52: Tạo định dạng JSON trong C asp.net service vs AndroidBài 57: Xây dựng phần mềm nghe trộm Tin Nhắn trong AndroidBài 58: Làm quen với môi trường lập trình Android Studio – Phần 1Bài 59: Làm quen với môi trường lập trình Android Studio – Phần 2Bài 60: Cấu hình Hardware Accelerated Execution để chạy máy ảo Android 5.0Bài 61: Cách đưa định dạng JSon về Java class bằng GSonBài 62: Cách đưa định dạng JSon về Java class bằng GSon (tiếp 1)Bài 63: Cách đưa định dạng JSon về Java class bằng GSon (tiếp 2)Bài 65: Xây dựng phần mềm Camera Uploader trong Android StudioBài 66: Cách vẽ các loại biểu đồ trong Android bằng AChartEngineBài 67: Cài đặt Google Play Service cho máy ảo Genymotion
Trang 1Lập trình Android phần 4 (the and)
Bài 46: Sử dụng Net Webservice trong Android
Bài 47: Xử lý tin nhắn SMS bằng BroadCastReceiver
Bài 48: Cách sử dụng Facebook SDK trong Android
Bài 49: Cách debug ứng dụng trên thiết bị Android bằng WIFI (không cần cắm USB Cable)
Bài 50: Cách sử dụng Google Cloud Message trong Android
Bài 51: Xử lý JSON trong Android
Bài 52: Tạo định dạng JSON trong C# asp.net service vs Android
Bài 57: Xây dựng phần mềm nghe trộm Tin Nhắn trong Android
Bài 58: Làm quen với môi trường lập trình Android Studio – Phần 1
Bài 59: Làm quen với môi trường lập trình Android Studio – Phần 2
Bài 60: Cấu hình Hardware Accelerated Execution để chạy máy ảo Android 5.0 Bài 61: Cách đưa định dạng JSon về Java class bằng GSon
Bài 62: Cách đưa định dạng JSon về Java class bằng GSon (tiếp 1)
Bài 63: Cách đưa định dạng JSon về Java class bằng GSon (tiếp 2)
Bài 65: Xây dựng phần mềm Camera Uploader trong Android Studio
Bài 66: Cách vẽ các loại biểu đồ trong Android bằng AChartEngine
Bài 67: Cài đặt Google Play Service cho máy ảo Genymotion
1
Trang 2Bài 46: Sử dụng Net Webservice trong Android
Để làm được bài 46 thì các bạn nên xem qua trước bài tập 44 và 45.
Trong bài tập 46 này Tui muốn trình bày 4 ví dụ về cách tương tác từ Android tới net web service thông qua thư viện KSOAP API
Các ví dụ này lần lượt sẽ là:
1) Cách lấy dữ liệu Primitive Data từ net webservice xuống Android
2) Cách lấy dữ liệu Complex Data từ net webservice xuống Android
3) Cách truyền Parameter primitive data từ Android tới net web service
4) Cách truyền Object data từ Android tới net web service
Thư viện KSOAP API các bạn tải ở đây (tạm thời tự nghiên cứu
trước): assembly-2.6.0-jar-with-dependencies.jar
http://www.mediafire.com/download/kmznar1je4702ga/ksoap2-android-Tui sẽ tranh thủ đưa 4 ví dụ trên để các bạn có thể kịp làm bài tập 43.
——————————————————————————
Tất cả 4 ví dụ này Tui sẽ sử dụng Service Description
của http://testdrthanh.somee.com/mywebservice.asmx?WSDL ở bài tập trước Khi bạn mở với Service description thì nó cung cấp cho bạn đầy đủ thông tin như hình Tui chụp dưới đây:
Trang 3NameSpace và tên hàm là rất quan trọng để dựa vào nó ta truy xuất dữ liệu, nên sai namespace hay method thì chắc chắn không thể truy suất.
Sau đây tui hướng dẫn các bạn những ví dụ ở trên
Các bài phải :
<uses-permission android:name=”android.permission.INTERNET” />
1) Cách lấy dữ liệu Primitive Data từ net webservice xuống Android
– Bạn tạo một Project Android giống như hình Tui chụp dưới này:
Trang 4Bạn chú ý là Tui đánh thứ tự từ 1, 2, 3, 4 là có ý đồ kỹ thuật Bạn phải sắp xếp như vậy thì chương trình mới sử dụng đúng thư viện và có thể truy suất webservice, nếu đặt sai có thể nó báo lỗi không thể thực thi ứng dụng.
Mặc định khi bạn tạo Project thì nó sẽ không đúng thứ tự như vậy đâu, bạn phải tự làm lại thứ tự, cách đổi thứ tự như thế nào Tui sẽ nói rõ cho bạn.
Tiếp tới là bạn phải tham chiếu tới thự Viện KSOAP API mà tui khoanh màu đỏ, bạn lưu nó ở đâu thì bạn tham chiếu tới cho đúng, hoặc bạn có thể nhét nó vào thư viện libs (bấm chuột phải vào Project / chọn Build Path/ chọn Add External
Archives –> chọn đúng thư viện KSOAP API để add vào ứng dụng)
– Cách đổi thứ tự tham chiếu như sau:
Bấm chuột phải vào Project của bạn/ chọn Build Path/Configure build path…:
Trang 5Cửa sổ mới hiển thị lên/chọn tab Order and export:
Ta sắp xếp như màn hình trên, để di chuyển thì dùng các nút : Up,down, top, bottom.
Trang 6Bạn chú ý là phải đảm bảo rằng tất cả các mục trong này được CHECKED rồi mới bấm nút OK.
– Sau đây là giao diện chính (rất đơn giản) của project này như sau:
Trang 7//thiết lập Permit để kết nối internet
StrictMode.ThreadPolicy policy = new
Trang 8//khai báo namespace trong Webservice
finalString NAMESPACE="http://tranduythanh.com/";
//hàm cần truy suất
finalString METHOD_NAME="CountCatalog";
finalString SOAP_ACTION=NAMESPACE+METHOD_NAME;
SoapPrimitive response=(SoapPrimitive) envelope.getResponse();
//hiển thị kết quả lên giao diện
Trang 9Bạn nên xóa dòng lệnh bên trên đi, đưa hàm doCount() vào một tiểu trình (bạn dùng Handler class hoặc AsyncTask class), cách làm đa tiến trình Tui đã hướng dẫn rất kỹ lưỡng ở những bài trước, bài này các bạn tự làm (nếu không làm được thì chưa đạt).
Bạn tải source code ở đây (nhớ khi down về thì đổi lại tham chiếu tới thư viện
KSOAP), bạn nên nhét nó vào thư mục Libs để chép tới nơi khác không phải tham chiếu lại:
http://www.mediafire.com/download/wo4211x3ra3x7q3/LearnWebservice_ForPrimi tiveData.rar
Bạn phải chú ý làm nhiều lần để cho hiểu rõ vấn đề.
2) Cách lấy dữ liệu Complex Data từ net webservice xuống Android
– Ở phần 1 Bạn đã biết cách truy suất webservice và trả về dữ liệu Primivite data, trong bài này Tui hướng dẫn các bạn lấy dữ liệu về dạng Complex Data.
– Cách cấu hình tham chiếu thư viện, đổi thứ tự tham chiếu … thì ở mục 1 tui đã nói, mục này Tui đi thẳng vào ứng dụng:
– Tui muốn tạo 1 Ứng dụng cho phép triệu gọi danh sách Danh Mục Sản phẩm từ webservice với giao diện vô cùng đơn giản như sau (bạn tạo ứng dụng tên
là LearnWebservice_complex_data):
Trang 10– Ứng dụng trên sẽ triệu gọi hàm : getListCatalog.
– Nó khác biệt là nó trả về danh sách đối tượng Danh Mục, làm thế nào để ta lấy được danh sách đối tượng nafy???
– Sau đây là XML Layout của ứng dụng:
Trang 11publicvoiddoGetList() {
try{finalString NAMESPACE="http://tranduythanh.com/";
finalString METHOD_NAME="getListCatalog";
finalString SOAP_ACTION=NAMESPACE+METHOD_NAME;
SoapObject request=newSoapObject(NAMESPACE, METHOD_NAME);
Trang 12//không có nó thì bị báo lỗi
MarshalFloat marshal=newMarshalFloat();
marshal.register(envelope);
HttpTransportSE androidHttpTransport=
newHttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
//Get Array Catalog into soapArray
SoapObject soapArray=(SoapObject) envelope.getResponse();
arrCate.clear();
//soapArray.getPropertyCount() return number of
//element in soapArray
//vòng lặp duyệt qua từng dòng dữ liệu
for(inti=0; i<soapArray.getPropertyCount(); i++)
//(SoapObject) soapArray.getProperty(i) get item at position i
SoapObject soapItem =(SoapObject) soapArray.getProperty(i);
//soapItem.getProperty("CateId") get value of CateId property
//phải mapp đúng tên cột:
Bạn tải source code mẫu ở
đây: http://www.mediafire.com/download/r2i7sayask0m9xl/LearnWebservice_comp lex_data.rar
Chú ý phải làm lại nhiều lần, nhất là Tui đảm bảo các bạn còn Quáng Gà với vòng lặp lấy dữ liệu ở trên.
Trang 133) Cách truyền Parameter primitive data từ Android tới net web service
– Hai phần trên các bạn đã biết cách lấy dữ liệu primitive data và complex data từ Server về client, phần 3 này các bạn sẽ được học cách thức truyền dữ liệu từ client lên server thông qua Webservice như thế nào.
– Giao diện của bài tập 3 như sau:
– Mô tả sương sương như sau: Màn hình chính cho phép hiển thị danh mục, mỗi lần nhấn vào danh mục nào đó thì hiển thị danh sách sản phẩm của danh mục này Ở đây
ta dùng hàm getListProductByCatalogId của webservice để hiển thị danh sách sản phẩm theo danh mục.
-Bạn tạo Project như dưới đây:
Trang 14– Vậy chương trình có 2 Activity, một số class: Product, Cate…
Trang 15publicclassProduct {
privateString productId;
privateString productName;
privateintquantity;
privatedoubleunitPrice;
privatedoubletotalMoney;
publicString getProductId() {
Trang 16publicclassCate {
privateString cateId;
privateString cateName;
publicString getCateId() {
publicString toString() {
returnthis.cateId.trim()+" - "+this.cateName.trim();}
Trang 18publicvoiddoGetList() {
try{finalString NAMESPACE="http://tranduythanh.com/";
finalString METHOD_NAME="getListCatalog";
finalString SOAP_ACTION=NAMESPACE+METHOD_NAME;
SoapObject request=newSoapObject(NAMESPACE, METHOD_NAME);
//Get Array Catalog into soapArray
SoapObject soapArray=(SoapObject) envelope.getResponse();
arrCate.clear();
//soapArray.getPropertyCount() return number of
//element in soapArray
//vòng lặp duyệt qua từng dòng dữ liệu
for(inti=0; i<soapArray.getPropertyCount(); i++)
//(SoapObject) soapArray.getProperty(i) get item at position iSoapObject soapItem =(SoapObject) soapArray.getProperty(i);
//soapItem.getProperty("CateId") get value of CateId property//phải mapp đúng tên cột:
String cateId=soapItem.getProperty("CateId").toString();
String cateName=soapItem.getProperty("CateName").toString();//đẩy vào array
Cate c=newCate(cateId, cateName);
Trang 19protectedvoidonResume() {
// TODO Auto-generated method stub
super.onResume();
doGetListProduct();
publicvoiddoGetListProduct()
try{
finalString NAMESPACE="http://tranduythanh.com/";
finalString METHOD_NAME="getListProductByCatalogId";
Trang 20finalString SOAP_ACTION=NAMESPACE+METHOD_NAME;
SoapObject request=newSoapObject(NAMESPACE, METHOD_NAME);
//Get Array Catalog into soapArray
SoapObject soapArray=(SoapObject) envelope.getResponse();
arrProduct.clear();
//soapArray.getPropertyCount() return number of
//element in soapArray
//vòng lặp duyệt qua từng dòng dữ liệu
for(inti=0; i<soapArray.getPropertyCount(); i++)
//(SoapObject) soapArray.getProperty(i) get item at position iSoapObject soapItem =(SoapObject) soapArray.getProperty(i);
//phải mapp đúng tên cột:
String productId=soapItem.getProperty("ProductId").toString();String productName=soapItem.getProperty("ProductName").toString();String squantity=soapItem.getProperty("Quantity").toString();String sunitPrice=soapItem.getProperty("UnitPrice").toString();String stotalMoney=soapItem.getProperty("TotalMoney").toString();intquantity=Integer.parseInt(squantity);
doubleunitPrice=Double.parseDouble(sunitPrice);
doubletotalMoney=Double.parseDouble(stotalMoney);
//đẩy vào array
Product p=newProduct(productId, productName, quantity, unitPrice, totalMoney);
publicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present
getMenuInflater().inflate(R.menu.list_product_by_catalog, menu);returntrue;
}
Trang 21– Quan sát dòng 55-56 đó là cách truyền Primivte data từ Android lên Webservice.
– Ta nên để trong OnReSume để đảm bảo rằng mọi thứ được sẵn sàng Trong này sẽ lọc toàn bộ sản phẩm theo danh mục.
– Source code phần 3 ở
đây: http://www.mediafire.com/download/3qyns57lzd2jjss/LearnWebservice_AddPa rameter_Primitive.rar
Các bạn chú ý phải làm lại nhiều lần bài 3 này vì nó khó và hay!
4) Cách truyền Object data từ Android tới net web service
– Đây là phần cuối cùng Tui muốn hướng dẫn các bạn cách truyền Object Data từ Client Android lên Server thông qua Webservice.
– Ở bài tập 4 này bạn bổ sung thêm 1 hàm InsertCatalog vào Webservice, với đối số truyền vào là đối tượng Catalog:
Trang 22– Khi nhấn nút “Show List Catalog”: Chương trình sẽ triệu gọi Webservice để hiển thị danh mục sản phẩm vào ListView bên dưới.
– Khi nhấn nút “Insert Cate”: Chương trình sẽ truyền đối tượng Catalog từ client lên Server thông qua Webservice Ở đây Tui dùng cách truyền Properties cho tiện Bạn chú ý phải quan sát kỹ Service Description của nó để truyền cho đúng Parameter:
Trang 23– Tương tự như cho các hàm mà có truyền tham số khác cũng vậy, phải đặt đúng tên trong Service Descripton.
– Ta có XML Layout của ứng dụng như sau:
Trang 24<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#FFFF80"
android:text="Input Catalog:"
android:textSize="20sp"/>
<TableLayout
android:layout_width="match_parent"android:layout_height="wrap_content">
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"android:layout_height="wrap_content">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#F0E7B3"
android:text="Cate Id:"/>
<EditText
android:id="@+id/editcateid"
android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#F0E7B3"
android:text="Cate Name:"/>
<EditText
android:id="@+id/editcatename"
android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"
android:inputType="text"/>
</TableRow>
<TableRow
android:id="@+id/tableRow4"
Trang 26finalString NAMESPACE="http://tranduythanh.com/";
finalString URL="http://testdrthanh.somee.com/mywebservice.asmx?WSDL";
ArrayList<String> arrCate=newArrayList<String>();
publicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present
Trang 27finalString METHOD_NAME="insertCatalog";
finalString SOAP_ACTION=NAMESPACE+METHOD_NAME;
SoapObject request=newSoapObject
//vì hàm insertCatalog trả về kiểu int
SoapPrimitive soapPrimitive= (SoapPrimitive)
}//end insert cate
publicvoidshowlistcate() {
try
finalString METHOD_NAME="getListCatalog";
finalString SOAP_ACTION=NAMESPACE+METHOD_NAME;
SoapObject request=newSoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope=
newSoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
Trang 28//Get Array Catalog into soapArray
SoapObject soapArray=(SoapObject) envelope.getResponse();
arrCate.clear();
//soapArray.getPropertyCount() return number of
//element in soapArray
for(inti=0; i<soapArray.getPropertyCount(); i++)
//(SoapObject) soapArray.getProperty(i) get item at position i
SoapObject soapItem =(SoapObject) soapArray.getProperty(i);
//soapItem.getProperty("CateId") get value of CateId property
Trang 29– Như vậy Tui đã hướng dẫn đầy đủ 4 trường hợp thường gặp phải khi các bạn lập trình Android với Net Webservice Các bạn cần chú tâm nghiên cứu, ngoài ra cần tự học thêm JSON (JavaScript Object Notation) cho đủ bộ.
Trang 30Bài 47: Xử lý tin nhắn SMS bằng BroadCastReceiver
Để hỗ trợ cho dự án nêu trong bài tập số 43 ( Đăng Ký Học Phần Bằng SMS cho các Trường Đại Học ) Tui đã cung cấp hàng loạt các bài 40 , 41 , 44 , 45 , 46 , 47 các bạn cần đọc kỹ lại những bài tập này trước khi bắt tay vào làm bài tập 43.
Ở bài tập 47 này, Tui muốn hướng dẫn các bạn cách sử
dụng BroadCastReceiver được đăng ký chạy background trong Android Manifest,
để nó có thể tự động “bắt” được tin nhắn SMS bất kỳ nào nhắn tới cho dù chúng ta không mở ứng dụng.
– Tui muốn ghi chú các bạn là:
1) Để nhận biết được đâu là Tin Nhắn đăng ký học phần thì bắt buộc các bạn phải có một CÚ PHÁP gửi tin nhắn riêng, giống như hàng ngày trên TIVI đều có hướng dẫn
cú pháp đăng ký hay bỏ phiếu cho ai đó Tương tự như vậy để nhận biết được tin nhắn đăng ký học phần thì hệ thống Website trường đại học cũng phải cung cấp CÚ PHÁP đăng ký 1 học phần như thế nào đúng không?
3) Khi 1 tin nhắn gửi tới mà ta phân tích được nó chính là tin nhắn CÚ PHÁP đăng
ký học phần thì mới tiến hành xử lý đăng ký, việc xử lý đăng ký là vô cùng phức tạp
vì đòi hỏi bạn phải hiểu biết cặn kẽ về quy trình xử lý học vụ, đối với trường hợp ở bài tập 43 thì bạn có thể làm ví dụ sơ sơ cũng được, nhưng theo TUI muốn làm thực
tế và bán được lại cho các trường đại học muốn áp dụng công nghệ thì bạn phải đến trực tiếp trường học, liên hệ (tốt nhất là có mối quan hệ sâu sắc) để hiểu được quy trình xử lý học vụ, như vậy may ra dự án của bạn mới áp dựng thực tế còn không chỉ
là làm sương sương chơi cho vui.
4) Với bài tập 47 này thì Tui chỉ làm 1 phần nhỏ: Nhận 1 tin nhắn theo cú pháp, trả lời tin nhắn có sự kiểm tra là tin nhắn đã được gửi thành công hay thất bại
(dùng PendingIntent ).
Công việc còn lại của bạn là sau khi nhận được tin nhắn theo cú pháp rồi, tiến hành phân tích đưa thông tin lên Server thông qua Webservice, kiểm tra kết quả trả về của Webservice, rồi trả lời SMS ngược lại cho người đăng ký–>có thể tự làm bài 43.
Tui có thể phác thảo mô hình phù hợp để các bạn test hệ thống này dễ dàng như sau:
Trang 31– Dựa vào mô hình trên thì bạn có thể kiểm tra hệ thống như sau:
+ Bạn có thể biến máy tính cá nhân của bạn làm máy SERVER, CSDL + webservice được cài đặt tại máy Server này
+ Bạn sử dụng 2 điện thoại: 1 điện thoại cài đặt phần mềm xử lý tin nhắn (gọi là Điện thoại chủ), 1 điện thoại bạn mượn đại của đứa bạn thân nhắn tin theo cú pháp vào điện thoại chủ đó Điện thoại chủ có nhiệm vụ bắt tin nhắn và xử lý rồi gửi lên
PC Server (hoặc dùng máy ảo nếu như bạn không có máy thật để test, nhưng cố gắng dùng máy thật).
– Trước khi vào ứng dụng thì tui nói CÚ PHÁP tin nhắn Tui dùng trong bài tập này
để đăng ký học phần như sau:
Trang 32VÍ DỤ, nếu sinh viên gửi tin nhắn “DRTHANH 113114115 ANDROID 9”
– Bạn tạo Project đơn giản như hình Tui chụp dưới đây:
– Bạn chú ý là thư viện KSOAP để tương tác với Webservice là bạn tự làm, Tui chủ
ý không làm phần này để bạn tự tổng hợp kiến thức đưa vào đây như vậy thì mới nâng cao được kỹ năng lập trình cũng như tư duy logic cho bạn.
– Tui chỉ tiến hành làm phần BroadCastReceiver, dĩ nhiên trong này Tui có để sẵn 1 hàm Trống để bạn điền coding cập nhật vào cho dễ dàng hơn.
– Chương trình này không liên quan gì tới giao diện, vì Tui đăng
ký BroadCastReceiver trong Manifest để hệ thống tự động nhận, xử lý và gửi tin nhắn (cho dù không mở ứng dụng), Nên giao diện bạn thích làm kiểu gì cũng được (tốt nhất là đừng quan tâm).
– Tui nói phần Manifest, bạn cấu hình như dưới đây:
1 <?xml version="1.0"encoding="utf-8"?>
Trang 35public classMyBroadCast extendsBroadcastReceiver {
// All available column names in SMS table
// [_id, thread_id, address,
// person, date, protocol, read,
// status, type, reply_path_present,
// subject, body, service_center,
// locked, error_code, seen]
public staticfinalString SMS_EXTRA_NAME = "pdus";public staticfinalString SMS_URI = "content://sms";
public staticfinalString ADDRESS = "address";
public staticfinalString PERSON = "person";
public staticfinalString DATE = "date";
public staticfinalString READ = "read";
public staticfinalString STATUS = "status";
public staticfinalString TYPE = "type";
public staticfinalString BODY = "body";
public staticfinalString SEEN = "seen";
public staticfinalintMESSAGE_TYPE_INBOX = 1;
public staticfinalintMESSAGE_TYPE_SENT = 2;
public staticfinalintMESSAGE_IS_NOT_READ = 0;
public staticfinalintMESSAGE_IS_READ = 1;
public staticfinalintMESSAGE_IS_NOT_SEEN = 0;
public staticfinalintMESSAGE_IS_SEEN = 1;
private Context context=null;
Trang 36public voidprocessSMS(Intent intent)
// Get the SMS map from Intent
Bundle extras = intent.getExtras();
String messages = "";
if ( extras != null)
// Get received SMS array
Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );for ( inti = 0; i < smsExtra.length; ++i )
SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);String body = sms.getMessageBody().toString();
String address = sms.getOriginatingAddress();
messages += "SMS from " + address + " :\n";
messages += body + "\n";
//gọi hàm xử lý nội dung và gửi kết quả trả về
doSending(address,body);
// Display SMS message từ các điện thoại khác gửi tới
Toast.makeText( context, messages, Toast.LENGTH_SHORT ).show();
Trang 37final SmsManager sms = SmsManager.getDefault();
Intent msgSent = new Intent("ACTION_MSG_SENT");
final PendingIntent pendingMsgSent =
PendingIntent.getBroadcast(context, 0, msgSent, 0);
context.getApplicationContext().registerReceiver(new
BroadcastReceiver() {
public voidonReceive(Context context, Intent intent) {
int result = getResultCode();
String msg="Gửi tin nhắn trả lời thành công";
Trang 38//tự động trả lời coi chừng tốn tiền khi dùng máy thật nhá
sms.sendTextMessage(phoneNumber, null, "DrThanh tự động trả lời bạn! Củm ơn!",
Trang 39* Các bạn xử lý đăng ký học phần tại đây
* Phân tích và gửi dữ liệu lên Server thông qua Webservice
* Vậy trên Server bạn viết 1 Webservice xử lý đăng ký học phần là OKÊ
Trang 40– Dòng lệnh 73 là hàm doSending , ở đây Tui viết hàm này chủ ý xử lý tin nhắn gửi tới có đúng cú pháp đăng ký hay không, tùy loại tin nhắn mà ta xử lý khác nhau.
– Dòng lệnh 140, hàm processRegisterCourse , Tui để trông để bạn tự viết coding vào đây, sử dụng KSOAP API để gửi thông tin lên cho Webservice xử lý học vụ.
– Bây giờ bạn có thể test thử: Cài phần mềm này vào 1 điện thoại, lấy 1 điện thoại khác nhắn tin theo đúng cú pháp vào điện thoại cài phần mềm, thì sẽ có kết quả như mong muốn.
– Tui đã test thử trên các thiết bị điện thoại thật và đã thành công, bạn cũng thử cài đặt vào để Test cho hiệu quả.
– Bạn có thể tải source code mẫu ở
đây: http://www.mediafire.com/download/k12pl9ccqu85dgn/LearnBroadCastReceiv er_SMS_With_Manifest.rar