-1

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ý 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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí