隐式和显式调用java_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"

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声明的:

隐式的Intent对象:Category类别

Intent intent = new Inte

我们可以使用如下代码进行跳转到以上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:xxx@gmail.com"));

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等信息而已。希望对大家有所帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值