• 如何在 B 应用中调用 A 应用中的 Activity


    1. 事件起源

    本文源于官方文档中的一句话: 

    Activities can be instantiated multiple times, even from other tasks.

    那么, 我们就想在一个应用中, 实例化另一个应用中的 Activity.

    2. 事件解决

    现在假设在 A 应用中有一个 Activity1, 然后, 我们在 B 应用中实例化 A 应用中的 Activity1.

    有两种方法解决:

    方法1: 在 B 应用中使用显示意图来启动 A 应用中的 Activity1

    B 应用中的启动代码如下:

    Intent intent = new Intent();
    intent.setClassName("powerise.modes.standards", "powerise.modes.standards.Activity1");
    startActivity(intent);

    A 应用中的配置代码如下:

    <activity
      android:name=".Activity1" android:label="Activity1">
      <intent-filter>
        <action android:name="powerise.intent.action.test" />
      </intent-filter>
    </activity>

    这样, 就可以在 B 应用中通过显示意图来启动 A 应用中的 Activity 了.

    注意: 这里一定要为 Activity1 添加一个 <intent-filter>, 并任意指定一个 <action>, 尽管该 <action> 用不上, 否则其他应用是无法访问到 Activity1. 而会报一个权限的错误.

    方法2: 在应用 B 中通过隐式意图来启动 A 应用中的 Activity1

    B 应用中的启动代码如下:

    Intent intent = new Intent();
    intent.setAction("powerise.intent.action.test");
    startActivity(intent);

    A 应用中的配置代码如下:

    <activity android:name=".Activity1" android:label="Activity1">
      <intent-filter>
        <action android:name="powerise.intent.action.test" />
        <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
    </activity>

    此时, 配置中一定要加上

    <category android:name="android.intent.category.DEFAULT" />

    这句代码, 以与隐式意图相匹配.

    最开始的时候, 就是因为把类别类型给写错了(复制过来的,忘记修改了), 所以老是报错. 现在这样就OK了. 把它给记录下来, 留着备用.



  • 相关阅读:
    实验教学管理系统 c语言程序代写源码下载
    模拟游客一天的生活与旅游java程序代写源码
    Java作业代写
    快餐店运行模拟C++程序源码代写
    HTML+CSS实例——漂亮的背景(一)
    HTML+CSS实例——漂亮的查询部件(一)
    求可能组合VB源码代写
    专业程序代写
    (重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。
    价值链与项目组模式打通专业管理模式的竖井
  • 原文地址:https://www.cnblogs.com/xpxpxp2046/p/2373122.html
Copyright © 2020-2023  润新知