作者:JoanNewLife | 来源:互联网 | 2023-05-19 10:31
一般情况下,在新建一个activity后,为了使intent可以调用此活动,我们要在androidManifest.xml文件中添加一个<activity>标签,
一般情况下,在新建一个activity后,为了使intent可以调用此活动,我们要在androidManifest.xml文件中添加一个标签,标签的一般格式如下:
其中,"android:name"是活动对应的类名称,"android:label"是活动标题栏显示的内容,
是意图筛选器,是动作名称,是指intent要执行的动作,是类别名称,一般情况下,每个 中都要显示指定一个默认的类别名称,即,但是上面的代码中没有指定默认类别名称,这是一个例外情况,因为其 中的是"android.intent.action.MAIN",意思是这项活动是应用程序的入口点,这种情况下可以不加默认类别名称。
当然,除和以外,中还有很多其他元素,在这里不详述。
上面的代码是androidManifest.xml中定义程序入口活动的例子,下面我们写一个自定义的例子:
在这个标签中,我们指定活动的类为MyBrowserActivity.class,活动的标题显示为"My Activity",意味着其他活动可以通过my.test.MyBrowser动作来调用这个活动,"my.test.MyBrowser"只是我们定义的一个动作的名称,写成包的形式是因为这样使我们更容易理解它的含义,如果我们把"my.test.MyBrowser"改成任意的内容如:"somethingelse",同样,我们可以通过这个新的动作名称,来调用这个活动。 元素指定了活动期望的数据类型,在这里,它期望的数据要以http://前缀开头。
正如前文所说,一般情况下,每个中都要显示地指定一个默认的类别名称,在我们自定义的活动中,我们指定了这个默认类别,假如没有这行代码,这个活动将不能被其他活动调用,一旦调用,就会导致程序的崩溃。这里有个小技巧,我们可以通过使用createChooser()来防止这种原因的崩溃,如下所示:
public void onClick(View view){
Intent i = new Intent("my.test.MyBrowser");
i.setData(Uri.parse("http://www.baidu.com"));
startActivity(Intent.createChooser(i, "Open URL using..."));
}
上面的函数实现点击按钮打开浏览器并浏览百度主页的功能,如果我们注释掉androidManifest.xml中对应activity的默认类别名称,在调用这个活动时(点击Launch My Browser按钮),不会产生崩溃,而是会弹出一个选择框,标题为"Open URL using...",内容为“无法找到应用程序以执行该操作”,如下图所示:
以上是对androidManifest.xml中的标签的一点总结,那么究竟哪种情况下需要指定默认类别,哪种请款下不需要指定呢,以及使用intent调用活动的整个流程是什么样的呢?详见http://blog.csdn.net/iverain/article/details/38660271 点击打开链接