需求:现在有应用A和应用B,我需要在A应用中启动B应用中的某个Activity

实现:A应用中的Activity发送广播,关键代码如下:

String broadcastIntent = "com.example.android.notepad.NotesList";//自己自定义
       Intent intent = new Intent(broadcastIntent);
       this.sendBroadcast(intent);

B应用中需要一个BroadcastReceiver来接收广播,取名TestReceiver继承BroadcastReceiver重写onReceive方法启动一个activity,关键代码如下:

if(intent.getAction().equals("com.example.android.notepad.NotesList")){
        Intent noteList = new Intent(context,NotesList.class);
        noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(noteList);
}

到这代码就完成了,当然在AndroidManifest.xml中要对TestReceiver进行注册,代码如下:

<receiver android:name="TestReceiver">
             <intent-filter>
                  <action android:name="com.example.android.notepad.NotesList"/>
            </intent-filter>
    </receiver>

这样就完成了通过广播启动另一个应用Activity。

注意问题:Context中有一
个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用
Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新
的task,解决办法是,加一个flag,也就是这句
noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的作用。如果不添加这句,就会报
android.util.AndroidRuntimeException: Calling startActivity() from
outside of an Activity,Caused by: android.util.AndroidRuntimeException:
Calling startActivity() from outside of an Activity context requires the
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

Android 通过广播启动另一个应用的Activity的更多相关文章

  1. Android 安装和启动另外一个应用

    有时候一个应用需要启动另外一个应用来完成操作,比如在某些应用中打开闹钟,相机,日历等等. 启动或安装相应的应用的方法: Step1:判断是否安装目标应用.只要知道目标应用的安装包名就可以通过判断&qu ...

  2. android应用如何启动另外一个apk应用

    在开发的过程中,经常会遇到在一个应用中启动另外一个apk应用的情况 问题的核心点在于我们要拿到第三方apk的package名称跟class名称, 如:package名称是com.funcity.tax ...

  3. 如何启动另一个应用的activity

    1.使用action Intent i=new Intent(); i.setAction(".........."); startActivity(i); 前提条件:要启动的ac ...

  4. Android学习笔记_70_一个应用程序启动另一个应用程序的Activity

    第一种(我自己写的) :之前在网上看来一些,很多不是我要的可以启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activit ...

  5. android 4种启动模式

    在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...

  6. Android零基础入门第73节:Activity初入门,创建和配置如此简单

    Activity是Android应用的重要组成单元之一,也是Android应用最常见的组件之一.前面看到的示例通常都只包含一个Activity或一个AppCompatActivity,但在实际应用中这 ...

  7. android intent隐式调用之一个应用程序启动另一个应用程序

    理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似:另一种是隐式的Intent,即Inten ...

  8. android 49 广播接收者中启动其他组件

    main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...

  9. Android项目实战(二十二):启动另一个APP or 重启本APP

    一.启动另一个APP 目前公司项目需求,一个主APP,需要打开某些小APP,这些小APP是整合了Unity的,但是还是android程序(所有小APP的包名是已知的). 以前没做过,查询了一下实现方法 ...

随机推荐

  1. 暑假集训(4)第三弹 -----递推(Hdu1799)

    问题描述:还记得正在努力脱团的小A吗? 他曾经最亲密的战友,趁他绘制贤者法阵期间,暗中设下鬼打墙将小A 围困,并准备破坏小A正在绘制的法阵.小A非常着急.想阻止他的行动.而要阻止他,必须先破解鬼打墙. ...

  2. boost::xml——基本操作以及中文乱码解决方案

    下面是本人使用boost库的xml部分的基础操作,并且解决对于大家使用boost库读写中文xml内容出现的乱码问题. 1.实现boost库xml基本操作2.解决boost对xml中中文乱码问题3.实现 ...

  3. C++编译期判断是否能够转型

    #include <iostream> #include <vector> using namespace std; template<class T,class U&g ...

  4. Xamarin 实现android gridview 多选

    参考文章:http://blog.csdn.net/zhouyuanjing/article/details/8372686 GridView初始化代码: gridViewStudent = Find ...

  5. [DevExpress]ChartControl之SeriesTemplate示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...

  6. 在AWS上安装laravel框架

    博客已经迁移到www.imyzf.com,本站不再更新,请谅解! Laravel是现在非常热门的PHP框架,这几天我试着在亚马逊AWS的服务器上安装Laravel,遇到很多问题,最后还是成功了.我的系 ...

  7. Jquery实现自动提示下拉框

    1.引入脚本库:     <script type="text/javascript" src="/Jscripts/jquery-1.3.2.js"&g ...

  8. Real-Time Rendering 3 彩图

    电子版只有黑白图,彩图见官网链接:http://www.realtimerendering.com/book.html.虽然只有部分彩图,不过够用了,下面是其中几幅图,如果只能看黑白的,那得多蛋疼:

  9. python 读写INI配置文件

    # -*- coding: utf-8 -*-import ConfigParserimport os '''读写配置文件的类[section]logpath = D:\log\imageminsiz ...

  10. 相似元素存在的意义---HTML&CSS

    1.<q> 效果: 告诉浏览器这是一段短引用,让浏览器以合适的方法来显示 注: 不能直接以双引号直接代替<q>,因为有些浏览器<q>的效果不是双引号. 不要忘了移动 ...