专栏首页上善若水028android初级篇之调起Activity Service的方法

028android初级篇之调起Activity Service的方法

我们知道调起另外一个组件一般有两种方式,显式的和隐式的。显式的会直接指定要启动的组件,而隐式的则通过匹配条件,调起匹配的组件。

是否可以任意的调用另外一个apk的Activity?

答案当然是否定的,由于android权限的限制,不可能任意的调起另一个apk的指定Activity。

Activity Service 那么调起的条件是什么?

需要在被调起的Activity所在的注册项配置中有exported标识,或者两个apk shareUid。

Intent Filter

Intent Filter 是一个过滤机制,它根据Intent的各种属性作为筛选依据,通过了测试该Intent才会到达组件。Intent Filter一般在注册Activity 、 Service 和 Broadcast Receiver的时候声明。

举一个例子:

<intent-filter android:priority="2147483647">
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
    <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
    <action android:name="@string/NetServiceStart"/>
</intent-filter>
<intent-filter android:priority="2147483647">
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
<intent-filter android:priority="2147483647">
    <action android:name="android.intent.action.PACKAGE_ADDED"/>
    <action android:name="android.intent.action.PACKAGE_REMOVED"/>
    <data android:scheme="package"/>
</intent-filter>
<intent-filter android:priority="2147483647">
    <action android:name="android.intent.action.SCREEN_ON"/>
    <action android:name="android.intent.action.USER_PRESENT"/>
</intent-filter>
<intent-filter>
    <action android:name="@string/cycle_act"/>
</intent-filter>

如上各filter之间是或的关系,根据优先级的大小决定匹配的顺序。

代码示例

显式的调用

startActivity(new Intent(SplashActivity.this, MainActivity.class));

隐式的调用

Intent intent = new Intent();
//设置 Intent 的动作
intent.setAction("com.great.activity_intent.Intent_Demo1_Result3");
Bundle bundle = new Bundle();
bundle.putString("id", strID);
intent.putExtras(bundle);
startActivity(intent);

参考链接

  1. 027android初级篇之Intent相关介绍
  2. 025android初级篇之Android am命令的实现
  3. Android自动化框架
  4. android权限
  5. android am pm命令

这是一个简单的使用问题,但我需要明确的知道答案。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 027android初级篇之Intent相关介绍

    在Android中提供了Intent机制来协助Android应用间,组件间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,...

    上善若水.夏
  • 009android初级篇之APP中使用系统相机相册等集成应用

    这是第一种方式 在启动相机前先指定好图片的文件位置,通知intent,同时也保留在成员变量中。然后在函数中,可以直接打开该文件

    上善若水.夏
  • 044android初级篇之android app中的权限及自定义权限

    如果自定义的软件中因对外提供什么服务,而想声明一个权限,来限制此服务的使用,可以在Manifest中,声明权限。

    上善若水.夏
  • Android 进阶3:Intent 与 IntentFilter 匹配规则

    Intent Intent 是一个消息传递对象,我们可以使用它启动其他应用组件完成特定的任务。 我们可以通过 Intent 来启动以下三个组件: Activit...

    张拭心 shixinzhang
  • Android开发笔记(四十)组件通讯工具Intent

    Intent用于处理Android各组件之间的通讯。Intent完成的工作主要有三部分: 1、Intent需标明本次通讯请求是从哪里来,到哪里去,要怎么走...

    用户4464237
  • Android Studio 调试会出现安装两个相同的APP?

    一个会写诗的程序员
  • Android 监听安装和卸载

    Android 应用程序的安装和卸载事件,是由系统进行监听并全局广播的,支持1.5(android 3)以上

    阳光岛主
  • Android中Broadcast的Intent大全 博客分类: Android小技巧 Android.netWAPGoogle

    chroya
  • Android中Activity的Intent大全 博客分类: Android小技巧 AndroidSecurityWeb.net

     Api Level 6 (SDK 2.0.1)、Api Level 7 (SDK 2.1和Api Level 5 (SDK 2.0)一样,没有增加。

    chroya
  • 027android初级篇之Intent相关介绍

    在Android中提供了Intent机制来协助Android应用间,组件间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,...

    上善若水.夏

扫码关注云+社区

领取腾讯云代金券