📜  带有演示应用的Android中的意图过滤器

📅  最后修改于: 2021-05-10 13:52:50             🧑  作者: Mango

目的是一个消息传递对象,它告诉您要执行哪种操作。目的最重要的用途是活动的启动。目的有助于组件之间的通信。

意向的基本用例

开始活动

活动代表应用程序中的单个屏幕,绕过意图实例,我们可以启动活动。

例子:

Kotlin
var intent = Intent(this, SecondActivity:: class.java)
startIntent(intent)


XML

   . . .


XML


XML


XML


XML


  
    


XML


  
    
        
            
                
                
            
  
            
            
                
                
                
            
  
            
            
                
                
                
                
            
  
        
  
    
  


Kotlin
package com.example.intentfilter
  
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // send button on click listener
        sendButton.setOnClickListener {
            var intent = Intent(Intent.ACTION_SEND) // intent
            intent.type = "text/plain"
            intent.putExtra(Intent.EXTRA_EMAIL, "niranjantest@gmail.com")
            intent.putExtra(Intent.EXTRA_SUBJECT, "This is a dummy message")
            intent.putExtra(Intent.EXTRA_TEXT, "Dummy test message")
            startActivity(intent)
        }
  
        // View on click listener
        buttonView.setOnClickListener {
            var intent = Intent(Intent.ACTION_VIEW)
            startActivity(intent)
        }
    }
}


您可以使用putExtra()添加其他信息。

开始服务

服务是在没有用户界面的情况下在后台执行操作的组件,这也称为后台进程。

传送广播

广播是任何应用均可接收的消息。在android中,系统会传送各种广播系统事件,例如设备开始充电,禁用或启用飞行模式等。

意向类型

有两种类型的意图

  1. 明确意图:明确意图可以执行由代码设置的特定应用程序操作,如更改活动;在明确意图中,用户了解所有事情,例如单击按钮后活动将开始,并且明确意图用于在应用程序内部进行通信
  2. 隐式意图:隐式意图不像显式意图那样命名特定的组件,而是声明要执行的常规操作,该操作允许另一个应用程序中的组件进行处理。

例如:当您点击任何应用程序中的共享按钮时,您会看到Gmail,蓝牙和其他共享应用程序选项。

意图过滤器

  • 隐式意图使用意图过滤器满足用户请求。
  • 意图过滤器指定活动,服务或广播接收者可以响应的意图类型。
  • 意向过滤器在Android清单文件中声明。
  • 意图过滤器必须包含

例子:

XML格式


   . . .

大多数意图过滤器均通过其描述

  1. <动作>,
  2. <类别>
  3. <数据>

1. <动作>

句法:

XML格式


将动作添加到意图过滤器。 元素必须包含一个或多个元素。如果intent过滤器中没有元素,则该过滤器不接受任何Intent对象。

常见动作示例:

  • ACTION_VIEW:当您掌握了一些活动可以向用户显示的信息时,可以将其与startActivity()一起使用,例如在图库应用程序中显示图像或在地图应用程序中查看地址
  • ACTION_SEND:当您拥有一些用户可以通过其他应用程序(例如电子邮件应用程序或社交共享应用程序)共享的数据时,应与startActivity()一起使用。

2. <类别>

句法:

XML格式


将类别名称添加到意图过滤器。一个字符串,其中包含有关应处理意图的组件类型的附加信息。

常见类别的示例:

  • CATEGORY_BROWSABLE:目标活动允许其自己由网络浏览器启动以显示链接引用的数据。

3. <数据>

句法:

XML格式


将数据规范添加到意图过滤器。规范可以只是数据类型,也可以只是URI,或者既可以是数据类型也可以是URI。

使用演示应用程序实现意图过滤器

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

步骤2:将依赖项添加到build.gradle(Module:app)文件

将以下依赖项添加到build.gradle(Module:app)文件。我们添加这两个依赖项是因为避免在MainActivity.kt文件中使用findViewById() 。尝试一下,否则使用常规方法,例如findViewById()

步骤3:使用activity_main.xml文件

导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。

XML格式



  
    

步骤4:使用AndroidManifest.xml文件

以下是AndroidManifest.xml文件的代码。

XML格式



  
    
        
            
                
                
            
  
            
            
                
                
                
            
  
            
            
                
                
                
                
            
  
        
  
    
  

步骤5:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

package com.example.intentfilter
  
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // send button on click listener
        sendButton.setOnClickListener {
            var intent = Intent(Intent.ACTION_SEND) // intent
            intent.type = "text/plain"
            intent.putExtra(Intent.EXTRA_EMAIL, "niranjantest@gmail.com")
            intent.putExtra(Intent.EXTRA_SUBJECT, "This is a dummy message")
            intent.putExtra(Intent.EXTRA_TEXT, "Dummy test message")
            startActivity(intent)
        }
  
        // View on click listener
        buttonView.setOnClickListener {
            var intent = Intent(Intent.ACTION_VIEW)
            startActivity(intent)
        }
    }
}

输出说明:

点击发送按钮,您将看到一个类似这样的屏幕,

现在选择Gmail应用,

现在转到我们的应用程序,然后单击查看按钮,

我们的应用程序虚拟应用程序。您可以使用这些选项中的任何应用程序,因为我们正在使用视图意图过滤器。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!