Tuesday, March 9, 2021

Tìm hiểu Implicit Intents trong Android

Trong android, Implicit Intents sẽ không chỉ định bất kỳ tên nào của thành phần để bắt đầu thay vào đó, nó khai báo một hành động để thực hiện và nó cho phép một thành phần từ các ứng dụng khác xử lý nó. Ví dụ: bằng cách sử dụng ý định ngầm, chúng tôi có thể yêu cầu một ứng dụng khác hiển thị chi tiết vị trí của người dùng hoặc v.v.

Sau đây là sự trình bày bằng hình ảnh về cách các ý định ngầm gửi một yêu cầu đến hệ thống android để bắt đầu một hoạt động khác.

Nếu bạn quan sát hình trên, Activity A tạo một intent với action bắt buộc và gửi nó đến hệ thống android bằng  phương thức startActivity () . Hệ thống android sẽ tìm kiếm bộ lọc intent phù hợp với intent trong tất cả các ứng dụng. Bất cứ khi nào tìm thấy khớp, hệ thống sẽ bắt đầu hoạt động khớp ( Activity B ) bằng cách gọi  phương thức onCreate () .

Trong android khi chúng tôi tạo implicit intent, hệ thống android sẽ tìm kiếm các thành phần phù hợp bằng cách so sánh nội dung của  intent  với bộ lọc intent được xác định trong  tệp kê khai của các ứng dụng khác trên thiết bị. Nếu thành phần phù hợp được tìm thấy, hệ thống sẽ khởi động thành phần đó và gửi thành phần đó đến đối tượng Intent. Trong trường hợp, nếu nhiều bộ lọc ý định được khớp thì hệ thống sẽ hiển thị hộp thoại để người dùng có thể chọn ứng dụng sẽ sử dụng.

Trong android,  Intent Filter là một biểu thức trong tệp kê khai của ứng dụng và nó được sử dụng để chỉ định loại ý định mà thành phần muốn nhận. Trong trường hợp nếu chúng tôi tạo Intent Filter cho hoạt động, thì các ứng dụng khác có khả năng bắt đầu hoạt động của chúng tôi bằng cách gửi một loại ý định nhất định, nếu không, hoạt động chỉ có thể được bắt đầu bởi một Intent rõ ràng.

Intent intent=new Intent(Intent.ACTION_VIEW);

intent.setData(Uri.parse("http://www.tutlane.com"));

startActivity(intent);

Nếu bạn quan sát ý định ngầm ở trên, chúng tôi đã không xác định bất kỳ tên cụ thể nào của thành phần để bắt đầu, thay vào đó chúng tôi đã xác định một hành động ( ACTION_VIEW ) để mở URL đã xác định trong trình duyệt bên trong thiết bị.

Tạo một ví dụ Implicit Intents trong Android

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.tutlane.intents.MainActivity">
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/urlText"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:ems="10" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnNavigate"
        android:layout_below="@+id/urlText"
        android:text="Navigate"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
Bây giờ, hãy mở tệp hoạt động chính MainActivity.java từ đường dẫn \ src \ main \ java \ com \ anhttvn \ com.anhttvn.helloworld và viết mã sau để mở một cửa sổ trình duyệt mới khi nhấp vào nút để tải url đã cho.
MainActivity.java
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText editText = (EditText)findViewById(R.id.urlText);
        Button btn = (Button) findViewById(R.id.btnNavigate);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = editText.getText().toString();
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
            }
        });
    }
}

No comments:

Post a Comment