【笔记】【Android】Manifest中的intent-filter使用
笔记系列,内容是从网络搜索的结果,不一定是正确的理解。
如果存在谬误,欢迎大家指正。
intent-filter是为了标明Activity,Service或者Braodcast Receiver可以相应的intent类型。
基本结构
<activity android:name=".YourActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
- action: 定义了Intent的Action。例如
android.intent.action.MAIN
表示应用的主入口点。 - category: 是对Action的补充。例如
android.intent.category.LAUNCHER
标明该Activity是应用的启动器。 - data: 定义了该应用可以处理的URI、MIME类型。例如
<data android:mimeType="image/*" />
表示该Intent处理所有图像类型的数据。
常用Action类型
在Android开发中,Action是Intent的一个重要属性,它定义了Intent要执行的操作。系统预定义了许多常用的Action,开发者也可以自定义Action。以下是一些常用的系统预定义Action及其说明:
android.intent.action.MAIN
说明: 表示应用的入口点。通常用于启动Activity,作为应用的主界面。
使用场景: 通常与android.intent.category.LAUNCHER一起使用,表示该Activity是应用的启动器。
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android.intent.action.VIEW
说明: 用于查看数据。系统会根据数据的类型(如URI或MIME类型)来决定使用哪个应用来处理这个Intent。
使用场景: 查看网页、图片、视频、地图等。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.example.com"));
startActivity(intent);
android.intent.action.SEND
说明: 用于发送数据。通常用于分享内容,如文本、图片等。
使用场景: 分享文本、图片、文件等。
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "Hello, this is a message!");
startActivity(Intent.createChooser(intent, "Share via"));
android.intent.action.DIAL
说明: 用于拨打电话。系统会打开拨号界面,并预填充电话号码。
使用场景: 拨打电话。
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:1234567890"));
startActivity(intent);
android.intent.action.CALL
说明: 用于直接拨打电话。需要CALL_PHONE权限。
使用场景: 直接拨打电话。
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:1234567890"));
startActivity(intent);
android.intent.action.EDIT
说明: 用于编辑数据。系统会根据数据的类型来决定使用哪个应用来处理这个Intent。
使用场景: 编辑文档、图片等。
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setData(Uri.fromFile(new File("/sdcard/document.txt")));
startActivity(intent);
android.intent.action.PICK
说明: 用于选择数据。通常用于从文件系统中选择文件或联系人。
使用场景: 选择图片、联系人等。
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CODE);
android.intent.action.GET_CONTENT
说明: 用于获取内容。通常用于从文件系统中选择文件。
使用场景: 选择文件、图片等。
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CODE);
android.intent.action.SENDTO
说明: 用于发送数据到特定的URI。通常用于发送短信或电子邮件。
使用场景: 发送短信、电子邮件等。
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:[email protected]"));
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Message body");
startActivity(intent);
android.intent.action.WEB_SEARCH
说明: 用于执行网络搜索。系统会打开默认的浏览器并执行搜索。
使用场景: 执行网络搜索。
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "search query");
startActivity(intent);
android.intent.action.BATTERY_LOW
说明: 用于监听电池电量低的广播。通常用于Broadcast Receiver。
使用场景: 监听电池电量低的广播。
<receiver android:name=".BatteryLowReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
android.intent.action.BOOT_COMPLETED
说明: 用于监听系统启动完成的广播。通常用于Broadcast Receiver。
使用场景: 监听系统启动完成的广播。
<receiver android:name=".BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Category
CATEGORY_DEFAULT: 默认的Intent类别,表示没有特定的类别。
CATEGORY_BROWSABLE: 表示Intent可以被浏览器启动。
CATEGORY_TAB: 表示Intent可以被用作标签页。
CATEGORY_ALTERNATIVE: 表示Intent是一个替代方案,可以替代其他Intent。
CATEGORY_SELECTED_ALTERNATIVE: 表示Intent是一个已选择的替代方案。
CATEGORY_LAUNCHER: 表示Intent可以被用作启动器。
CATEGORY_INFO: 表示Intent可以被用作提供信息的应用。
CATEGORY_HOME: 表示Intent可以被用作主屏幕。
CATEGORY_PREFERENCE: 表示Intent可以被用作设置。
CATEGORY_TEST: 表示Intent可以被用作测试。
CATEGORY_CAR_DOCK: 表示Intent可以被用作车载设备。
CATEGORY_DESK_DOCK: 表示Intent可以被用作台式设备。
CATEGORY_LE_DESK_DOCK: 表示Intent可以被用作小型台式设备。
CATEGORY_HE_DESK_DOCK: 表示Intent可以被用作大型台式设备。
CATEGORY_CAR_MODE: 表示Intent可以被用作车载模式。
CATEGORY_APP_MARKET: 表示Intent可以被用作应用商店。
CATEGORY_VR_HOME: 表示Intent可以被用作VR主屏幕。