Android通过第三方应用唤起App(Intent)

通过隐式Intent的唤起应用程序

在很多应用中都会遇到一种情况就是点击某一个音频、视频或者图片,唤起其他应用或者通过发送的方式唤起其他应用打开对用的数据信息。这种方式很常见并且在Android官方文档中也有一定的描述 点击此处进入。但在实际使用中获取数据以及如果配置Intent过滤器都会有一些问题的存在。这篇文章主要介绍如果进行配置及使用。

音频文件通过“其他应用打开”或者“发送到其他”的方式唤起应用

在这里插入图片描述
如上图,我们以微信的“发送到其他”和“其他应用打开”为例来介绍如果设置Intent的过滤条件。该部分需要了解Intent的一些标签属性改这里不过多介绍。 点击此处参考地址
通过上述的隐式Intent打开应用的两种方式,需要通过为应用程序对应的Activity添加action标签。在action标签中存在name属性,在 name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。所以说如果我们要通过上述两种方式开启应用需要配置字符串。字符串如下:

  1. android.intent.action.VIEW 对应java常量ACTION_VIEW
  2. android.intent.action.SEND 对应java常量ACTION_SEND
  3. android.intent.action.SEND_MULTIPLE 对应java常量ACTION_SEND_MULTIPLE

具体描述: Intent.ACTION_VIEWIntent.ACTION_SENDIntent.ACTION_SEND_MULTIPLE
简单理解可以认为ACTION_VIEW是“其他应用打开“”的过滤条件之一;其他两个是“发送到其他”的过滤条件只是ACTION_SEND代表发送一条数据、另一个代表发送多条数据。

过滤数据类型

打开或者发送的时候都是需要携带一些数据进行操作。而具体什么样的数据才是我们需要的并且是有效的就需要另外的一些过滤标签进行限制了。例如我们需要获取的文件是一个音频文件就需要使用到android:mimeType属性该数据是在data标签中声明。如果是音频需要这样赋值:android.mimeType=audio/* 为什么是audio/*因为音频的格式有很多 *代表所有能够支持的音频格式。如果只需要支持接收MP3类型的音频也可以设置为:audio/mpeg
除此之外Intent还会指定一个URL结构.URI的每个部分都是一个单独的属性:scheme、host、port 和 path:
在这里插入图片描述
下例所示为这些属性的可能值:

	content://com.example.project:200/folder/subfolder/etc

在此 URI 中,架构是 content,主机是 com.example.project,端口是 200,路径是 folder/subfolder/etc。
了解如何过滤后,我们就可以配置AndroidManifest.xml文件了。代码如下

		<activity
            android:name=".ui.activity.xxxxxxxx"
            android:configChanges="orientation|keyboardHidden"
            android:exported="true"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustPan">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="file" />
                <data android:scheme="content" />
                <data android:mimeType="audio/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="audio/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="audio/*" />
            </intent-filter>
        </activity>

数据具体如果配置就需要查看唤起应用如何配置信息了以微信为例:其他应用打开的方式
ACTION_VIEW数据请求结构

微信发送音频ACTION_VIEW时的数据信息

在这里插入图片描述

微信发送音频ACTION_SEND时的数据信息,而ACTION_SEND_MULTIPLE只是mItems集合是多条数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫vs笨笨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值