android 跳转到其他应用的特殊方法

来源:互联网 发布:软件自学网 下载 编辑:程序博客网 时间:2024/06/05 13:30

      常用方式就不详说了,无非是显式和隐式跳转。现在要说的是非常特殊的一种,经过查看intent的内部源码发现:intent有成员ComponentName,此类接受包名和类名两个字段作为参数。平时使用的显式调用即是这种方式的一种特殊调用

       显式调用:

       Intent intent = new Intent(this, TestActivity.class);
       startActivity(intent);

       特殊调用:

       Intent intent = new Intent(“com.call.app”, "com.call.app.TestActivity");
       startActivity(intent);

    需要注意的是,TestActivity作为另一个应用里面的activity,能否调用成功,取决于AndroidManifest文件的下方属性 是否为 true

   android:exported

Activity 是否可由其他应用的组件启动 —“true”表示可以,“false”表示不可以。若为“false”,则 Activity 只能由同一应用的组件或使用同一用户 ID 的不同应用启动。

默认值取决于 Activity 是否包含 Intent 过滤器。没有任何过滤器意味着 Activity 只能通过指定其确切的类名称进行调用。 这意味着 Activity 专供应用内部使用(因为其他应用不知晓其类名称)。 因此,在这种情况下,默认值为“false”。另一方面,至少存在一个过滤器意味着 Activity 专供外部使用,因此默认值为“true”。

该属性并非限制 Activity 对其他应用开放度的唯一手段。 您还可以利用权限来限制哪些外部实体可以调用 Activity(请参阅 permission 属性)。



0 0
原创粉丝点击