Intent 与 Intent过滤器

Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作

其基本用例主要包括以下三个:

Intent类型

从 Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用 bindService(),系统会引发异常

构建 Intent

Intent 中包含的主要信息如下:

显式 Intent 示例

// 在 Activity 中执行, 所以 'this' 就是当前的上下文//  fileUrl 是一个URL, 类似 "http://www.example.com/image.png"Intent downloadIntent = new Intent(this, DownloadService.class);downloadIntent.setData(Uri.parse(fileUrl));startService(downloadIntent);

隐式 Intent 示例

// 创建一条文本消息Intent sendIntent = new Intent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);sendIntent.setType("text/plain");// 确定这个Intent可以匹配到Activityif (sendIntent.resolveActivity(getPackageManager()) != null) {    startActivity(sendIntent);}

设置选择框标题:

Intent chooser = Intent.createChooser(sendIntent, title);

接收隐式 Intent

以下是一个使用包含 Intent 过滤器的 Activity 声明,当数据类型为文本时,系统将接收 ACTION_SEND Intent :

<activity android:name="ShareActivity">    <intent-filter>        <action android:name="android.intent.action.SEND"/>        <category android:name="android.intent.category.DEFAULT"/>        <data android:mimeType="text/plain"/>    </intent-filter></activity>
限制对组件的访问---如果必须确保只有您自己的应用才能启动您的某一组件,请针对该组件将 exported 属性设置为 "false"