Intent意图

Intent意图

finish() //关闭当前界面,返回上一界面

(1)显⽰意图

app内部跳转,在自己应用内做跳转,明确指定跳转⻚⾯
startActivity(Intent(this,HomeActivity::class.java))

1
2
3
4
5
6
7
8
//点击主界面跳转到下一个界面
override fun onTouchEvent(event: MotionEvent?): Boolean {
if (event?.action == MotionEvent.ACTION_DOWN){
val intent = Intent(this,HomeActivity::class.java)
startActivity(intent)
}
return true
}

(2)隐示意图

跳转到同一部手机上的其他应用的某个界面
同⼀部⼿机上 其他APP A -> B app ⽀付功能(exported为true)
(action category) //意图过滤器

如果同一部手机中的 app 配置文件中的 action name 重复了,在跳转时会有弹窗提示你到底想要跳转到哪个 app

1
2
3
4
5
6
7
8
9
10
11
//当前app写入另一个app配置文件中的 action name
val intent = Intent("com.example.dongge.pay")
//界面传值
intent.putExtra(name:"testKey",viewModel.number)
startActivity(intent)


//另一个界面获取值
val value = intent.getlntExtra(name: "testKey", defaultValue: 0)
binding.textView.text = "$value"

Intent 的常用操作动作(Action)

Intent 的操作动作(Action)是用来描述意图的目的或行为的字符串常量。
不同的操作动作代表不同的功能或操作,可以告诉系统要执行的操作是什么。
以下是一些常用的 Intent 操作动作:

  1. ACTION_VIEW :查看数据,比如查看网页、图片、视频等。

  2. ACTION_EDIT :编辑数据,比如编辑文本、图片等。

  3. ACTION_SEND :发送数据,比如分享文本、图片等。
    Intent.ACTION_SEND 用于启动发送数据的操作(分享)

    1
    2
    3
    4
    5
    6
    7
    val sendIntent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "这是要分享的文本内容")
    type = "text/plain"
    }

    startActivity(Intent.createChooser(sendIntent, "分享到"))
  4. ACTION_DIAL :拨打电话。
    Intent.ACTION_DIAL
    打开拨号界面并显示指定的电话号码,但不会直接拨打电话。用户可以在拨号界面中确认号码并手动拨打电话(手动拨号)

    1
    2
    3
    val phoneNumber = "1234567890"
    val intent = Intent(Intent.ACTION_DIAL,Uri.parse("tel:$phoneNumber"))
    startActivity(intent)
  5. ACTION_CALL :直接呼叫。
    Intent.ACTION_CALL 这个动作是直接拨打指定的电话号码,不需要用户确认。(直接呼叫)
    需要注意的是,使用ACTION_CALL需要在AndroidManifest.xml中添加CALL_PHONE权限。

    1
    2
    <!--这样做会在应用安装时向用户显示权限请求,用户需要授予应用拨打电话的权限才能使用ACTION_CALL。-->
    <uses-permission android:name="android.permission.CALL_PHONE" />

    实际上,从Android 6.0(API级别23)开始,仅在AndroidManifest.xml文件中添加CALL_PHONE权限是不够的。应用程序还需要在运行时请求CALL_PHONE权限,并且用户必须在应用程序中明确授予此权限。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //TakePicture请求图片
    val permissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()){
    if (it){
    //用户同意
    }else{
    //用户不同意
    }
    }
    permissionLauncher.launch(Manifest.permission.CALL_PHONE)
1
2
3
4
5
6
val phoneNumber = "1234567890"
val callIntent = Intent(Intent.ACTION_CALL).apply {
data = Uri.parse("tel:$phoneNumber")
}
startActivity(callIntent)

  1. ACTION_PICK :从数据中选择一个项。
  2. ACTION_GET_CONTENT :获取数据内容。
  3. ACTION_MAIN :启动应用程序的主要入口点。
  4. ACTION_INSERT :插入一条新的数据。
  5. ACTION_DELETE :删除数据。

通过指定不同的操作动作,开发者可以告诉系统要执行的具体操作,从而实现不同的功能和交互。

Intent 类常用方法

Intent 类是一个非常重要的类,用于在应用程序中实现组件之间的通信和交互。
以下是 Intent 类中常用的一些方法:

  1. setAction(String action):设置意图的操作动作,比如 ACTION_SEND 、 ACTION_VIEW 等。
  2. putExtra(name: String, value: …):向意图中添加额外的数据,可以传递文本、整数、布尔值、序列化对象等。
    额外数据键(Extra Key):
  • Intent.EXTRA_STREAM 用于在 Intent 中传递一个数据流(Stream)或者指向数据流的 URI ,实现数据的共享和传递功能。
    通常情况下,Intent.EXTRA_STREAM 被用于在应用程序之间共享或传递文件、图片、视频等二进制数据

  • Intent.EXTRA_MIME_TYPES 用于指定要处理的数据的 MIME 类型
    (Multipurpose Internet Mail Extensions)多用途互联网邮件扩展
    MIME 类型是一种标准的数据格式标识方法,用于指示数据的类型,例如图片、音频、视频等
    可以精确地指定要处理的数据类型,确保只有符合指定类型的数据被选择和处理,提高了数据处理的准确性和效率。

  • Intent.EXTRA_TEXT:用于传递文本数据。

  • Intent.EXTRA_EMAIL:用于传递电子邮件地址。

  • Intent.EXTRA_SUBJECT:用于传递邮件主题。

  • Intent.EXTRA_PHONE_NUMBER:用于传递电话号码。

  • Intent.EXTRA_CC:用于传递电子邮件的抄送地址。

  • Intent.EXTRA_BCC:用于传递电子邮件的密送地址。

  • Intent.EXTRA_TITLE:用于传递标题信息。

  • Intent.EXTRA_HTML_TEXT:用于传递HTML格式的文本数据。

  • Intent.EXTRA_KEY_EVENT:用于传递按键事件。

  • Intent.EXTRA_SHORTCUT_ICON:用于传递快捷方式的图标。

这些额外数据键可以帮助开发者在Intent中传递各种类型的数据,实现不同功能和交互。开发者可以根据需求选择合适的额外数据键,将数据添加到Intent中,以实现数据的传递和处理。

  1. setType(String type):设置数据的类型,比如”text/plain”、”image/jpeg”等。
  2. setData(Uri data):设置意图的数据,通常用于指定要处理的数据的URI。
  3. setFlags(int flags):设置意图的标志位。
    addFlags 添加多个标志位
    Intent 标志:
  • FLAG_ACTIVITY_CLEAR_TASK
  • FLAG_ACTIVITY_NEW_TASK
  • Intent.FLAG_GRANT_READ_URI_PERMISSION 用于指示接收 Intent 的组件应该被授予读取指定 URI 的权限
    这个标志通常用于在应用程序之间共享数据时,确保接收方应用程序有权限读取数据
  1. addCategory(String category):向意图中添加类别,用于指定要处理的组件的类别。
  2. createChooser(Intent target, CharSequence title):创建一个选择器对话框,让用户选择要处理意图的应用程序。
  • target :要包装的 Intent 对象,即需要用户选择应用程序来处理的 Intent。
  • title :选择器对话框的标题,通常是一个 CharSequence 类型的字符串,用于描述选择器的目的或内容。
  • 当调用 startActivity() 方法时,传入通过 Intent.createChooser() 创建的 Intent 对象,系统会显示一个选择器对话框,列出可以处理该 Intent 的应用程序列表。用户可以从中选择一个应用程序来处理该 Intent。
  • 可以提供更好的用户体验,让用户在处理特定操作时能够选择适合他们的应用程序,而不是直接打开默认应用程序。这样可以增加灵活性和用户友好性。

title:选择器对话框的标题,通常是一个 CharSequence 类型的字符串,用于描述选择器的目的或内容。
8. getIntent():获取意图的详细信息。
9. getAction():获取意图的操作动作。
10. getExtras():获取意图中的额外数据。
11. resolveActivity(PackageManager pm):判断是否有能够处理该意图的组件。

以上是Intent类中常用的一些方法,开发者可以根据实际需求选择合适的方法来创建和处理意图,实现应用程序中的各种功能和交互。

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Annie
  • Visitors: | Views:

嘿嘿 请我吃小蛋糕吧~

支付宝
微信