Bộ lọc ý định là một thể hiện của lớp IntentFilter. Bộ lọc ý định rất hữu ích khi sử dụng ý định ngầm, Nó sẽ không xử lý trong mã java, chúng tôi phải thiết lập nó trong AndroidManifest.xml. Android phải biết nó đang khởi chạy loại ý định nào để các bộ lọc ý định cung cấp thông tin cho android về ý định và hành động.
Trước khi khởi chạy ý định, android sẽ thực hiện kiểm tra hành động, kiểm tra danh mục và kiểm tra dữ liệu. Ví dụ này minh họa về cách sử dụng bộ lọc ý định trong android.
Bước 1 - Tạo một dự án mới trong Android Studio, đi tới Tệp ⇒ Dự án Mới và điền tất cả các chi tiết cần thiết để tạo một dự án mới.
Bước 2 - Thêm mã sau vào res / layout / activity_main.xml.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/buton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="intent filter button" /> </LinearLayout>
Ở trên, chúng tôi đã đưa ra một nút khi bạn nhấp vào nút, nó sẽ hiển thị ý định cùng với hành động.
Bước 3 - Thêm mã sau vào src / MainActivity.java
package com.example.andy.myapplication; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.RadioButton; public class MainActivity extends AppCompatActivity { RadioButton radioButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button button = findViewById(R.id.buton); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("message/rfc822"); intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); intent.putExtra(Intent.EXTRA_SUBJECT, "Welcome to tutorialspoint.com"); startActivity(Intent.createChooser(intent, "Choose default Mail App")); } }); } }
Ở trên khi người dùng nhấp vào nút, nó sẽ gọi ý định bằng ACTION_SEND và sẽ đặt loại là message / rfc882. Bây giờ chúng tôi đã chuyển id email và thông điệp chủ đề.
Bước 4 - Thêm mã sau vào tệp kê khai.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.andy.myapplication"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="message/rfc822" /> </intent-filter> </activity> </application> </manifest>
Ở trên, chúng tôi đã khai báo hành động, danh mục và dữ liệu. Hãy thử chạy ứng dụng của bạn. Tôi giả sử bạn đã kết nối thiết bị Di động Android thực tế với máy tính của mình. Để chạy ứng dụng từ android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ. Chọn thiết bị di động của bạn làm tùy chọn, sau đó kiểm tra thiết bị di động sẽ hiển thị màn hình mặc định của bạn -
Nhấp vào nút trên, nó sẽ gọi trình chọn mục đích để chọn ứng dụng để gửi dữ liệu từ mục đích như hình dưới đây -
Chúng tôi đã chọn ứng dụng gmail như hình dưới đây -
Trong kết quả trên, nó sẽ lấy dữ liệu từ ý định và thêm vào ứng dụng gmail.