CÀI ĐẶT VÀ SỬ DỤNG INTENT TRONG ANDROID
**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ý ...
**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