Sunday 24 August 2014

Cấu trúc cơ bản của Intent và dùng Intent để mở các ứng dụng khác có trong ứng dụng

Ở bài viết trước mình mình cùng đã giới thiệu cơ bản về Intent nhưng đó chỉ là một phần của Intent mà thôi.
Ở phần này mình sẽ giới thiệu kỹ hơn về cấu trúc thường có của Intent, cũng như dùng Intent để mở các ứng dụng khác.
Thông thường các bạn thường khởi tạo Intent để chuyển Activity với cấu trúc sau:

Intent intent = new Intent(Context packageContext, Class<?> class);
intent.setAction("string");//Nếu cần
startActivity(intent);//khởi động Intent

Ở đây Context là tham số Context của Package class, thường là activity hiện tại, giới thiệu qua một chút về Context cho các bạn có thể
nắm được. Context là một giao diện thông tin dạng global(tức xuất hiện mọi nơi) về môi trường ứng dụng của bạn. Nó là một abstract class dùng để cài đặt cung cấp bởi hệ thống. Dùng nó để truy cập tài nguyên, khởi động activity...Có lẽ là hơi khó hiểu mình khuyên các bạn nên tìm hiểu về nó một chút để chúng ta hiểu rõ hơn. Tham số tiếp theo là class Generic, dạng ClassName.class.

Thật ra constructor đi cùng Intent thì còn rất nhiều, khi bạn làm việc thì eclipse sẽ đưa ra rất nhiều hàm Constructor khác khi tạo một instance của Intent khác. Với Intent bạn có thể setAction và getAction(khi cần bạn sẽ làm điều này) ngoài ra còn có putExtra(xxxx)(khi muốn truyền dữ liệu gửi đi theo dạng key/value).
 Nhưng ngay từ khi tạo một Intent bạn cũng thể set action cho Intent


Nhìn vào hình ảnh phía trên các bạn có thể thấy Construct đi cùng hành động tức action và uri. Uri như là một một đường dẫn hay là chỉ dẫn để bạn đạt được mục làm gì với hành động tương ứng đó. Để làm rõ vấn đề này thì sau đấy sẽ là việc ứng dụng của Intent vào việc mở một ứng dụng trên Android bạn sẽ thấy dễ hiểu hơn dưới đây là vài ứng dụng cơ bản Intent có thể làm, thật ra thì còn rất nhiều các bạn hãy tìm hiểu thêm để rõ hơn.

Đây là cấu trúc chung khi dùng Intent để mở một ứng dụng
Intent intentBrowser = new Intent(String action, Uri uri);

1. Dùng Intent để mở trình duyệt
Các bạn cần khởi động cùng action là Intent.ACTION_VIEW và một Uri là đường dẫn của của một website nào đó.
Dưới đây là ví dụ

Intent intentBrowser = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/"));
startActivity(intentBrowser);

hoặc vó thể viết

Intent intentBrowser = new Intent();
intentBrowser.setAction(Intent.ACTION_VIEW);//Hành động
intentBrowser.setData(Uri.parse("https://www.google.com/"));//Đường chỉ dẫn tương ứng hành động
startActivity(intentBrowser);

2. Dùng Intent để quay số

Intent intentDial = new Intent(android.content.Intent.ACTION_DIAL, Uri.parse(“tel:+651234568”));
startActivity( intentDial);

3. Dùng Intent để mở một ví trí trên bản đồ.

Intent intentMap = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(“geo:37.827500,-122.481670”));
startActivity(intentMap);

Để mở những Intent này các bạn hãy vào file MainActivity.java lần trước và chúng ta sẽ thay thế từng Intent trong hàm onClick của Button để thử nghiệm và thấy kết quả.

Ví dụ

this.btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Chuyển tới activity 2 tạo một intent và start nó
/*Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);*/
Intent intentBrowser = new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.google.com/"));
startActivity(intentBrowser);
}
});

Và khi chạy chương trình chúng ta được


Ok với những ứng dụng khác của Intent các bạn tự kiểm tra nhé.
Ở bài tiếp theo mình sẽ bắt đầu những loạt bài viết về Layout để chúng ta có thể bắt đầu làm những giao diện Android cơ bản. Và sau khi học xong thì chúng ta lại tiếp tục quay trở về với Intent một lần nữa.
Cảm ơn các bạn đã đọc bài viết, nếu sai sót hãy comment phía dưới giúp mình.







No comments :

Post a Comment