CÀI ĐẶT VÀ SỬ DỤNG INTENT TRONG ANDROID
Bài đăng này đã không được cập nhật trong 9 năm
**Lập trình android với eclip trên window 7. **
1. Cài đặt
Bạn có thể truy cập vào trang http://developer.android.com/sdk/index.html để down load package đầy đủ để lập trình android với eclip trên windown. Ngoài ra, các bạn có thể sử dụng them plugin như bitbucket hay github để quản lý project của mình.
2. Sử dụng Intent trong Android
2.1. Intent là gì?
Một ứng dụng Android có thể bao gồm nhiều activity – hoạt động.
Một activity dùng phương thức setContentView(...) để hiện một giao diện người dùng mà từ đó có thể thực hiện các hành động. Các activity tồn tại độc lập với nhau, nhưng chúng thường trao đổi dữ liệu và các action (hành động). Thông thường, một activity được chỉ định là activity đầu tiên (main) cái sẽ hiện ra đầu tiên khi ứng dụng được bật. Việc chuyển từ activity này sang activity khác được thực hiện bằng cách yêu cầu activity hiện hành thực thi một intent.
2.2. Làm cách nào để kích hoạt được 1 intent.
Thông thường, một intent được gọi như sau:
startActivity(intent) : Bật 1 activity
sendBroadcast(intent): gửi một intent tới component BroadcastReceiver nào quan tâm
startService(intent) , bindService(intent, …) : khởi tạo hoặc liên lạc với một background Service.
Intent được khởi tạo như sau:
Intent myActivity = new Intent (action, data);
Trong đó: - Action: action có sẵn (built-in) cần thực hiện, chẳng hạn ACTION_VIEW, ACTION_EDIT, ACTION_MAI hoặc user-created-activity - Data : primary data - dữ liệu dành cho thực hiện action, chẳng hạn số điện thoại cần gọi (biểu diễn dưới dạng một Uri)
Ví dụ về các cặp action/data:
ACTION_DIAL tel:123
- Bật ứng dụng điện thoại với số điện thoại đã cho được điền sẵn.
Intent myActivity = new Intent (Intent.ACTION_DIAL, Uri.parse( "tel:555-1234"));
startActivity(myActivity);
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/dial-200x300.png
ACTION_VIEW http://www.google.com
- Mở trang Google trong một browser view. Lưu ý rằng VIEW action thực hiện việc gì mà nó cho là hợp lý nhất đối với mỗi URI cụ thể.
Intent myActivity = new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?0?q=1860+east+18th+street+cleveland+oh"));
startActivity(myActivity);
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/view_map-203x300.png
ACTION_EDIT content://contacts/people/1
- Soạn thông tin về người có ID bằng "1“ trong danh sách contacts.
Intent myActivity = new Intent(Intent.ACTION_EDIT, Uri.parse("content://contacts/people/1"));
startActivity(myActivity);
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/edit_contact-201x300.png
ACTION_VIEW content://contacts/people/1
- Bật activity để hiện thông tin về người thứ 1 trong danh sách contacts.
Intent myActivity = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/1"));
startActivity(myActivity);
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/view_contact-200x300.png
Danh sách các action sẵn có:
ACTION_MAIN
ACTION_VIEW
ACTION_ATTACH_DATA
ACTION_EDIT
ACTION_PICK
ACTION_CHOOSER
ACTION_GET_CONTENT
ACTION_DIAL
ACTION_CALL
ACTION_SEND
ACTION_SENDTO
ACTION_ANSWER
ACTION_INSERT
ACTION_DELETE
ACTION_RUN
ACTION_SYNC
ACTION_PICK_ACTIVITY
ACTION_SEARCH
ACTION_WEB_SEARCH
ACTION_FACTORY_TEST
2.3. Làm thế nào để truyền và nhận dữ liệu giữa 2 activity khác nhau?
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/two-activity-300x115.png
Mô hình minh họa việc truyền dữ liệu giữa 2 activity với nhau.
-
Ở activity-1 ta sử dụng hàm startActivityForResult()để chạy 1 intent và đợi kết quả trả về trong hàm onActivityResult(). Với activity-2 ta có hàm onResult() để gửi trả lại kết quả cho activity-1.
-
Trong quá trình trao đổi dữ liệu đó android sử dụng một đối tượng được gọi là Bundle để đẩy dữ liệu và lấy ra. Bundle như là một gói hang chứa trong nó nhiều dữ liệu. Và intent chỉ việc mang gói hàng đó đi cho các activity tự xử lý.
-
VD:
Bundle myData = new Bundle();
myData.putInt(“int1”, 1);
myData.putString(“string1”, “This data is a String”)
=> Ta đã đóng gói được int và string1 vào trong Bunder là myData
Việc còn lại là put nó vào Intent và gửi đi.
Intent myIntent = new Intent(Activity1.this, Activity2.class);
myIntent.putExtras(myData);
=> Ta gọi startActivityForResult(myIntent, 1122); để chạy activi2 với gói dữ liệu được truyền đi là myIntent
- Ở bên activity2 ta dùng lệnh getIntent() và getExtras() để lấy ra Intent và Bundle tương ứng
- Vd:
Intent inten1 = getIntent()
Bundle data = intent1.getExtras();
Dùng getInt(), getString() … để lấy dữ liệu từ trong Bundle ra:
Int x = data.getInt(“int1”);
String s = dât.getString(“string1”)
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/main_activity-204x300.png
Màn hình chính của ứng dụng (Khi ấn vào button Calculator thì MainActivity sẽ gửi data là X=4 tới activity2. Activity2 sẽ nhân đôi số X và trả kết quả về cho MainActivity)
http://tech.blog.framgia.com/vn/wp-content/uploads/2014/07/result-300x222.png
All rights reserved