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 请求来启动你的应用组件。
示例:
-
使用显式 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 在应用组件之间传递信息和启动组件。