Intent跳转到其他应用页面

来源:互联网 发布:发射后不管知乎 编辑:程序博客网 时间:2024/05/22 05:32

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这几个元素都是可以重复的,匹配时只选其中一个即可。


原创粉丝点击