Android开发:显式/隐式Intent意图跳转Activity总结

显式跳转

在已知包名和类名的情况下常用的跳转方法:

nt mIntent = new Intent();

mIn

Int

etent.setClassName("com.android.settings","com.android.settings.Settings");

mContext.startActivity(mIntent);

我们也常这么用:

y.class);

startActivity(intent);

这是跳转到当前应用的某个Activity,

Intent intent = new Intent(mContext, XXActivi
t相信大家都十分熟悉,今天主要讲的是如何使用隐式intent意图跳转

隐式跳转

1、隐式跳转之Action跳转

假定有一个Activity在清单中是这样的声明的:

omer_action_here"

</intent-filter>

</ac

<activity android:name=".ActionActivity";

<intent-filter

action android:name="cus
ttivity>

那么我们就可以使用以下代码进行跳转到上面这个Activity中:

//创建一个隐式的 Intent 对象:Action 动作

Intent intent = new Intent();

tegory跳转

定有一个Activity在清单中是这样

//设置 Intent 的动作为清单中指定的action

intent.setAction("customer_action_here");

startActivity(intent);

2、隐式跳转之C
a声明的:

<activity android:name=".CategoryActivity" >

<intent-filter>

<action android:name="customer_action_here" />

隐式的 Intent 对象:Category 类别

Intent intent = new Inte

<category android:name="customer_category_here" />

</intent-filter>

</activity>

我们可以使用如下代码进行跳转到以上Activity:

//创建一
个nt();

intent.setAction("customer_action_here");

//添加与清单中相同的自定义category

intent.addCategory("customer_category_here");

startActivity(intent);

3、隐式跳转之Data跳转

d:scheme="content"

假定有一个Activity是这样定义的:

< activity android:name=".DataActivity">

< intent-filter>

< category android:name="android.intent.category.DEFAULT" />

< data

andro
i android:host="com.example.intentdemo"

android:port="8080"

android:pathPattern=".*pdf"

android:mimeType="text/plain"/>

< /intent-filter>

< /activity>

我们可以使用如下代码进行跳转:

使用,不可共用

//单独以 setData 方法设置 UR

//创建一个隐式的 Intent 对象,方法四:Date 数据

Intent intent = new Intent();

Uri uri = Uri.parse("content://com.example.intentdemo:8080/abc.pdf");

//注:setData、setDataAndType、setType 这三种方法只能单
独I

//intent.setData(uri);

//单独以 seType 方法设置 Type

//intent.setType("text/plain");

//上面分步骤设置是错误的,要么以 setDataAndType 方法设置 URI 及 mime type

intent.setDataAndType(uri, "text/plain");

startActivity(intent);

startActivity(intent);

4.2 调用地图

Uri uri = Ur

//打开地图查看经纬度

i.

清单中的daport及以下属性时可选的,没有必要一定添加,但是添加了port及以下属性的话,java代码中的Uri中要做相应的匹配。

4、隐式跳转之调用系统应用

4.1 使用浏览器浏览网页

//web浏览器

Uri uri= Uri.parse("http://www.baidu.com");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

parse("geo:38.899533,-77.036476");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

4.3 调用电话拨号(不需要拨号权限)

Uri uri = Uri.parse("tel:10086");

Intent intent = new Intent(Intent.ACTION_DIAL, uri);//注意区别于下面4.4的action

startActivity(intent);

"这里写短信内容");

inte

4.4 调用电话直接拨号(需要拨号权限)

Uri uri = Uri.parse("tel:15980665805");

Intent intent = new Intent(Intent.ACTION_CALL, uri);//注意区别于上面4.3的aciton

startActivity(intent);

4.5 调用短信程序(无需发送短信权限,接收者自填)

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.putExtra("sms_body"
,nt.setType("vnd.android-dir/mms-sms");

startActivity(intent);

4.6 调用短信程序(无需发送短信权限)

Uri uri = Uri.parse("smsto:10086");//指定接收者

Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

intent.putExtra("sms_body", "你这个黑心运营商");

startActivity(intent);

4.7 调用邮件程序

.ACTION_VIEW);

//Uri uri = Uri.parse("file:///sdc

Intent intent = new Intent(Intent.ACTION_SENDTO);

intent.setData(Uri.parse("mailto:[email protected]"));

intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");

intent.putExtra(Intent.EXTRA_TEXT, "这是内容");

startActivity(intent);

4.8 调用媒体播放器

Intent intent = new Intent(Inten
tard/zhy.mp3");

Uri uri = Uri.parse("file:///sdcard/a.mp3");

intent.setDataAndType(uri, "audio/mp3");

startActivity(intent);

4.9 调用搜索

Intent intent = new Intent();

intent.setAction(Intent.ACTION_WEB_SEARCH);

intent.putExtra(SearchManager.QUERY, "android");

startActivity(intent);

总结

相信大家经过上面的介绍,已经对Intent跳转有了一个比较成熟的理解,Intent是组件之间的纽带,使用它可以让系统替我们完成很多工作,不需要我们来指定完成工作的程序。实际上,我们会发现,调用系统程序使用液无非是隐式跳转,只不过使用的是系统内置的一些Action,Uri,Data等信息而已。希望对大家有所帮助.

时间: 2024-10-12 04:29:44

Android开发:显式/隐式Intent意图跳转Activity总结的相关文章

Android开发积累_2)权限、Intent

   整合好这段时间开发测试工具所用到的一些东西,积累下来,自己脑子不是很灵活,只想到这种本方法:每次都记录下来,尽管很简单(对于很多人来说). File.separator 的使用: 在Android中,官方鼓励支持使用File.separator来插入"/"符号.因为不同的机型配置系统等各种因素下,"/"符号的转义字符也会不同*:在 UNIX 系统上,此字段的值为 '/':在 Microsoft Windows 系统上,它为 '\'.一般建议使用File.sep

【Android开发学习笔记】【第三课】Activity和Intent

首先来看一个Activity当中启动另一个Activity,直接上代码说吧: (1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

Android开发之查看应用包名package和入口activity名称的方法

使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用aapt    //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\apk\es3.apk 2.运行后的结果中以下两行分别是应用包名package和入口activi

【Android开发学习笔记】【第五课】Activity的生命周期-上

今天学习Activity当中的七个生命周期函数: 首先得说一个事情,就是在代码当中如果加入了 System.out.println(" ------");之后,如何查看这里面的输出内容 打开之后只输入“Filter Name”和“by Log Tag” 即可 添加成功后可以看到 本次学习主要总结如下: 1.onCreate() Acitivity首次创建时被调用.用于设置Acitivity的布局文件,绑定按钮监听器等一些普通静态操作. 2.onStart() Acitivity对用户可

Android中显示和隐式Intent的使用

显示启动activity                                                                                                                   这个很简单,下面是代码示例:为了看着方便,所以就把layout直接截图了,里面的代码只是一些简单的布局.activity_login.xml: activity_main.xml: 下面是Manifest.xml中的代码 1 <?xml vers

Android 5.0之后隐式声明Intent 启动Service引发的问题

一.概述 Android系统升级到5.0之后做了不少的变化(5.0变化),开发人员一定要注意这些变化,要不然就有的折腾了.这次最大的变化应该是把Dalvik虚拟机改成了ART(Android Runtime),后续会专门讲解这一块.其他的都是一些零碎的问题,例如前段时间发了一篇Android 5.0之后修改了HashMap的实现(传送门).这篇主要讲一下遇到跟Service相关的问题. 二.详情 Service身为Android四大组件之一,它的使用频率还是比较高的,并且现在主要都是运用在比较关

5. C# -- 显式/隐式类型转换,溢出检查

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 {     class Program {         static void Main(string[] args) {             ushort destinationVar;      

Android开发学习—— 创建项目时,不是继承activity,而是继承ActionBarActivity

对于我们新建android项目时, 会 继承ActionBarActivity. 我们在新建项目时, 最小需求的sdk 选择 4.0以上版本.这样 新建的android项目就是继承activity了!

Android开发教程 - 使用Data Binding(三)在Activity中的使用

修改activity布局 如果使Activity支持Data Binding,在布局的最外层加入"<layout>"标签即可,由于是加在最外层,所以即使重构现有工程,所做的修改也非常简单,并不会影响现有的布局结构. 以下以MainActivity进行举例. 修改前activty_main.xml的布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln