您的位置:首页 > 移动开发 > Android开发

Android使用intent跳转到其它应用activity界面

2016-07-09 23:54 543 查看
Android使用intent跳转到其它应用activity界面

关于这方面的理解:

1、使用包名和类名直接启动,前提是知道这两个。

1.1、启动主activity

Intent intent=new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
//参数是包名,类全限定名,注意直接用类名不行
ComponentName cn=new ComponentName("com.example.administrator.test",
"com.example.administrator.test.MainActivity");
intent.setComponent(cn);
startActivity(intent);

1.2、启动非主的activity,非主的activity不能直接启动,必须要在manifest里面设置exported属性为true,表示此activity对外公开,才能直接跳转。

Intent intent=new Intent();
//参数是包名,类全限定名,注意直接用类名不行
ComponentName cn=new ComponentName("com.example.administrator.test",
"com.example.administrator.test.Activity2");
intent.setComponent(cn);
startActivity(intent);

1.3、应当把这部分代码放到try块里面,跳转出错时捕获异常,否则异常会导致应用崩溃。

try
{
Intent intent=new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); //参数是包名,类全限定名,注意直接用类名不行 ComponentName cn=new ComponentName("com.example.administrator.test", "com.example.administrator.test.MainActivity"); intent.setComponent(cn); startActivity(intent);
}catch (Exception e)
{
Util.P.le("产生异常");
}

1.4、还可以通过代码获取包名,主类名,不过这样就不算直接启动了。

2、一般的。使用这种方法只能启动到系统的activity,没搞出来,待探究。

2.1、使用intent-filter的intent的属性配合起来用。

在xml文件中给对应的activity添加intentt-filter节点,再在节点下面添加各种属性。

要启动activity是,intent添加属性,当某个activity的intent-filter里面的属性包括了intent所含的所有属性,

则这个activity满足条件。当有 多个满足条件的activity时会让用户选择启动哪个 。

2.2具体的。

action:主要是代表这个activity所执行的动作。比如查看,编辑,拨打。相当于一个句子中的动词。另外还代表一些其他的特性,比如main。

category:分类,主要是指定activity是关于处理哪方面的信息的。比如地图,邮件。相当于一个句子的宾语。

data:传递数据用。调到其它的activity,有可能就会带一些数据,这个数据通过可以通过intent的putExtras传递,也可以通过data传递。
  extra传递必须知道key,适用于在一个应用中。在应用间传递就用data,data规定了格式等,就适用于在应用间传递一些规范了的数据。

data的结构较为复杂,字符串格式和url(http的)一样。“模式://主机:端口/路径”,在data节点下指这些值

这里有四个部分,指定其中几个部分为某值。比如指定模式为content,则intent必须指定模式为intent的,才能启动此acvitiy。

另外,有几种data的组合是不能指定的,比如缺少scheme的组合不行。

再另外:mimeType属性,也用于和前面的action搭配,指定动作的对象(宾语)。

2.3、注意的:(1) action,category,data,intent-filter这几个元素都是可以重复的,匹配时只选其中一个即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息