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

来源:互联网 发布:pt18rz标签机打印软件 编辑:程序博客网 时间:2024/05/16 01:19

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

    • 什么是隐式Intent
    • 利用隐式Intent来实现活动跳转
    • 利用隐式Intent打开浏览器
    • 利用隐式Intent实现拨号功能

什么是隐式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还可以在活动之间传递数据,比如向下一个活动传递数据,或者返回数据给上一个活动。

1 0