Android Intent 是一种在 Android 应用组件之间传递信息和启动组件(如 Activity、Service 和 BroadcastReceiver)的方法。除了基本用法之外,Intent 还有一些高级用法,如下所述:
传递 Bundle 数据: 使用 Intent 可以将 Bundle 数据传递给其他组件。Bundle 数据可以包含任何基本数据类型、数组和Parcelable 对象。
示例:
Intent intent = new Intent(MainActivity.this, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString("key", "value");
intent.putExtras(bundle);
startActivity(intent);
使用 Intent Filter: 通过在 AndroidManifest.xml 文件中定义 Intent Filter,可以让应用响应特定的 Intent 请求。这使得其他应用可以使用这些 Intent 请求来启动你的应用组件。
示例:
<activity android:name=".TargetActivity">
<intent-filter>
<action android:name="com.example.MY_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
使用显式 Intent: 显式 Intent 通过指定目标组件的完整类名来启动目标组件。这种方式可以确保始终启动正确的组件实例。
示例:
Intent intent = new Intent(MainActivity.this, TargetActivity.class);
startActivity(intent);
使用隐式 Intent: 隐式 Intent 不直接指定目标组件的类名,而是通过 action、category 和 data 等信息来描述期望的操作。系统会根据这些信息找到合适的组件来处理这个 Intent。
示例:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
startActivity(intent);
使用 PendingIntent: PendingIntent 是一种延迟执行的 Intent,可以在未来的某个时间点执行。它通常用于在通知、闹钟和应用事件(如点击按钮)中启动 Activity 或 Service。
示例:
Intent intent = new Intent(MainActivity.this, TargetActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Title")
.setContentText("Content")
.setSmallIcon(R.drawable.ic_notification)
.setContentIntent(pendingIntent)
.build();
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, notification);
使用 Intent.createChooser(): 当需要向用户显示一个 Intent 选择器时,可以使用 Intent.createChooser() 方法。这允许用户从多个可用的应用中选择一个来处理特定的 Intent。
示例:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "Hello, world!");
Intent chooser = Intent.createChooser(intent, "Choose an app to send the text");
startActivity(chooser);
这些高级用法可以帮助你更灵活地使用 Android Intent 在应用组件之间传递信息和启动组件。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: 如何在Android上实现Socket多线程通信