在上一篇学习安卓开发[3] - 使用RecyclerView显示列表中了解了在进行列表展示时RecyclerView的使用,本次记录的是在应用中如何通过隐式Intent调用其它应用的功能,比如发短信、打电话、拍照等
- 隐式Intent
- 短信
- 判断是否存在相关APP
- 相机
- FileProvider
- Bitmap
- 功能声明
隐式Intent
Intent对象用来向操作系统说明需要处理的任务。使用显式Intent时,要指定操作系统需要启动的activity,但使用隐式intent,只需告知操作系统想要进行的操作,系统就会启动能完成该操作的activity,如果有多个符合条件的activity,会提供用户一个应用列表供选择
Android是如何通过隐式intent找到并启动合适应用的呢?原因在于配置文件中的itent过滤器设置,比如我们也想开发一款短信应用,那么可以在AndroidMainfest的activity声明中这样设置:
<activity android:name=".CrimeListActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
隐式Intent的组成部分有
1)要执行的操作,通常以Intent类中的常量来表示,比如访问URL可以使用Intent.ACTION_VIEW,发送邮件使用Intent.ACTION_SEND
2)待访问数据的位置,这可能是设备以外的资源,如某个网页的URL,某个文件的URI
3)操作涉及的数据类型,如text/html, audio/mpeg3等
4)可选类别,用来描述对activity的使用方式
短信
那么要启动短信的隐式intent的方法为:
mReportButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Inten