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 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【Android基础】Android利用Intent与其他应用交互

前言: 上一篇博客给大家聊了Intent的定义,分类、属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent...

36710
来自专栏分享达人秀

四大组件的纽带——Intent

前面学习Activity时己经多次使用了 Intent,当一个Activity需要启动另一个Activity时, 程序并没有直接告诉系统要启动哪个Act...

2235
来自专栏yang0range

Activity的启动模式

privatestaticStack mActivityStack;Activity的启动模式,不仅仅是我们面试的时候经常被问到的面试题目,也是我们日常开发当中...

1164
来自专栏小巫技术博客

Activity启动模式解析

1053
来自专栏刘望舒

Android解析ActivityManagerService(二)ActivityTask和Activity栈管理

前言 关于AMS,原计划是只写一篇文章来介绍,但是AMS功能繁多,一篇文章的篇幅远远不够。这一篇我们接着来学习与AMS相关的ActivityTask和Activ...

3789
来自专栏Phoenix的Android之旅

Android初级面试题之一

Activity的四种启动模式想必入门安卓开发一两年的都了解, · standard · singleTop · singleTask · singleInst...

1136
来自专栏向治洪

我所理解的Android 启动模式

首先,这是从 一个开源网站转载的,觉得写得不错,对我们之前理解的activity的启动模式是一个新的理解方式,并给出实际的应用场景。 任务栈是什么 任务栈Tas...

2367
来自专栏封碎

在一个apk中调用另外一个apk中的activity 博客分类: Android小技巧 AndroidCC++C#Web

    其实,这本来是一件很简单的事情,但是我发现很多人问我这个问题,所以写篇小文章供参考。

1022
来自专栏编程之旅

iOS开发——数据持久化之归档

在实际的项目开发中,数据持久化是我们必须要考虑的一个事情,如何把我们需要的数据进行持久化处理。

1161
来自专栏Android干货

Android项目实战(四十九):Andoird 7.0+相机适配

一、在AndroidManifest.xml 文件中添加 四大组件之一的 <provider>

810

扫码关注云+社区

领取腾讯云代金券