Intent用法——在活动之间跳转(二)

OK我们来讲一下隐式Intent~~~~
在隐式Intent部分,将给出3个主要例子,来帮助对其的理解,主要目录如下。

什么是隐式Intent

在显式Intent中,我们想要启动哪个活动被明确指出,而隐式Intent指定了一系列更为抽象的action和category等信息,交由系统去分析这个Intent并启动相应的活动。

那么什么叫做相应的活动?其实就是与我们给出的这些信息相匹配的活动~请看例子1,如下:

利用隐式Intent来实现活动跳转

首先来配置我们的action和category等信息,这一步在AndroidManifest.xml中完成,在<activity> 标签下配置<intent-filter> ,添加如下代码:

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.example.activitytest.ACTION_START" />
                //指明当前活动可以响应的action
                <category android:name="android.intent.category.DEFAULT" />
                //附加信息,更精确地指明当前活动能够响应的Intent中还可能带有的category
            </intent-filter>
        </activity>

这就是我们设置的action和category的信息,也就是说,只有Intent中的内容与我们所给定的这些内容完全匹配的时候,该Intent才能被活动响应。

好的,现在我们来让我们Intent匹配这些信息,来使Intent能够被启动。
修改FirtstActivity中按钮的点击事件:

 button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
               //这个是隐式intent
               Intent intent=new Intent("com.example.activitytest.ACTION_START");
               startActivity(intent);
               }
            });
    }

值得提出的是,在这里我们没有指定category,是因为android.intent.category.DEFAULT 是一种默认的category,在调用startActivity() 方法的时候会自动将这个category添加到Intent中。而如果需要配置别的category类型,则在<intent-filter> 和FirtstActivity中按钮的点击事件作相应添加就可以啦。

运行程序,在FirstActivity的界面点击Button 1,发现你已经可以启动SecondActivity啦~~~而且这次是通过隐式Intent启动的~

利用隐式Intent打开浏览器

使用隐式Intent还可以启动(你自己app之外的)其他活动,这让Android多个应用程序之间的功能共享成为了可能。下面这个例子是来调用系统的浏览器的,同样通过在FirstActivity中点击按钮跳转到浏览器页面。

 button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                    //打开浏览器界面
                    Intent intent = new Intent(Intent.ACTION_VIEW);    
                    //指定intent的action是 Intent.ACTION_VIEW 
                    intent.setData(Uri.parse("http://www.baidu.com"));     
                    //Uri.parse()可以将一个网址字符串解析成Uri对象,
                    //再调用intent的setData()方法将这个Uri对象传递进去。
                    startActivity(intent);
                  }
            });
    }

代码解释:

setData() 接收一个Uri对象,主要用于指定当前Intent正在操作的数据,而这些数据通常以字符串的形式传入到Uri.parse()中。

重新启动程序,在FirstActivity中点击Button 1,就可以看到浏览器的打开~

利用隐式Intent实现拨号功能

将FirstActivity中public void onClick(View v) 里的代码块作如下修改:

 //调用系统拨号界面
               Intent intent=new Intent(Intent.ACTION_DIAL);
               intent.setData(Uri.parse("tel:10086"));
               startActivity(intent);

重新启动程序,可以看到程序调用了拨号界面,并显示了10086~

关于Intent在活动中跳转的功能介绍大概就是这些了~除此之外,Intent还可以在活动之间传递数据,比如向下一个活动传递数据,或者返回数据给上一个活动。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值