前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >028android初级篇之调起Activity Service的方法

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

作者头像
上善若水.夏
发布2018-09-28 10:41:27
5990
发布2018-09-28 10:41:27
举报
文章被收录于专栏:上善若水上善若水

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

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

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

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

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

Intent Filter

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

举一个例子:

代码语言:javascript
复制
<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之间是或的关系,根据优先级的大小决定匹配的顺序。

代码示例

显式的调用

代码语言:javascript
复制
startActivity(new Intent(SplashActivity.this, MainActivity.class));

隐式的调用

代码语言:javascript
复制
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命令

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.01.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 是否可以任意的调用另外一个apk的Activity?
  • Activity Service 那么调起的条件是什么?
  • Intent Filter
  • 代码示例
    • 显式的调用
      • 隐式的调用
      • 参考链接
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档